Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2440 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [VBA Excel macro]réutilisation de variable + comparaisons auto

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[VBA Excel macro]réutilisation de variable + comparaisons auto

n°1096092
corran
Posté le 25-05-2005 à 10:41:16  profilanswer
 

Je poste ici car je pense que ce que je cherche est un peu compliqué pour WS&R
Dans le cadre de l'automatisation de traitements de fichiers Excel (exportés par une appli en VB à partir d'une base access, pour poser le contexte ; je n'ai accès ni à la base ni à l'appli), je cherche en fait à faire deux choses différentes.
 
La première, c'est la réutilisation d'une variable.  
A l'ouverture d'un fichier qu'on va appeler fichier.xls, je lance une macro (que j'ai déjà faite) pour rendre les données exploitables. Ce que je voudrais, c'est qu'au lancement de la macro s'ouvre une inputbox, qui me permette de rentrer une variable, qu'on va appeler mois. Ensuite, une fois le traitement terminé, je voudrais que la macro enregistre fichier.xls sous mois.xls (donc réutiliser la variable comme nom de fichier). Une fois le fichier enregistré sous mois.xls, la macro ouvre un autre fichier excel, fichier2.xls. Dans ce fichier, la macro doit créer un nouvel onglet intitulé mois (du nom de la variable, donc), et doit une nouvelle fois réutiliser la variable pour faire un rechercher/remplacer, après un copier coller d'un onglet précédent vers l'onglet mois : cet onglet vient chercher ses données dans mois.xls.
Je ne pense pas que ce soit sorcier, mais faire ce genre de choses n'est pas spécifiquement dans mes compétences, et je n'ai pas de bouquins à disposition ni de connexion internet qui me permet de rechercher efficacement (i.e. ne pas mettre 3 h à afficher une page).
 
La deuxième est plus compliquée (enfin je pense), je ne sais meme pas si c'est faisable.
On parle d'un autre fichier, toujours extrait de la meme base.
Ce fichier reprend des produits, classés par marque, famille, sous-famille... Il comprend entre autres deux colonnes sur lesquelles je voudrais travailler : marge locale & marge consolidée.
Dans le cadre du traitement du fichier brut en quelque chose d'utilisable, je voudrais deux choses :
[-] en fonction de la sous famille, je voudrais que la macro identifie un taux de marge inférieur à la normale. Par exemple, si le taux de marge attendu pour la sous-famille 1 est d'au moins 20%, je voudrais que la macro détecte les produits de cette sous famille ayant une marge inférieure.
[-] je souhaiterais aussi que la macro identifie les produits dont la marge consolidée est inférieure à la marge locale, car c'est une anomalie.
Les lignes concernant ces produits seraient alors copiées dans un onglet "anomalies".
 
Merci pour toute aide.

mood
Publicité
Posté le 25-05-2005 à 10:41:16  profilanswer
 

n°1096180
fusion_sad​am
:D
Posté le 25-05-2005 à 11:11:36  profilanswer
 

pour la premiere question je peux te passer un bout de code qui permet de sauvegarder des onglet dans un nouveau fichier excel :

Code :
  1. Dim Newbook As Workbook
  2. Dim MyBook As Workbook
  3.     Set MyBook = ThisWorkbook
  4.     Set Newbook = Workbooks.Add(xlWBATWorksheet) 'Creer un nouveau fichier Excel avec une seule feuille dedans'
  5.    
  6.     Newbook.SaveAs Filename:=fName
  7.    
  8.     Workbooks(MyBook.Name).Sheets("Détail" ).Copy After:=Workbooks(Newbook.Name).Sheets(1)
  9.     Workbooks(MyBook.Name).Sheets("Moyenne Jour" ).Copy After:=Workbooks(Newbook.Name).Sheets(2)
  10.     Workbooks(MyBook.Name).Sheets("Moyenne Mois" ).Copy After:=Workbooks(Newbook.Name).Sheets(3)
  11.     Workbooks(MyBook.Name).Sheets("Journal d'erreur" ).Copy After:=Workbooks(Newbook.Name).Sheets(4)
  12.    
  13.     Application.DisplayAlerts = False 'Désactive le message d'alerte
  14.     Workbooks(Newbook.Name).Sheets("Feuil1" ).Delete
  15.     Application.DisplayAlerts = True
  16.    
  17.     Workbooks(Newbook.Name).save
  18.     Workbooks(Newbook.Name).Close


 
tu peux en faire une procedure avec le nom de ton fichier en parametre  
 
 
dim Fname as string
 
   Fname=Inputbox("Nom du fichier" ) & ".xls"
   call CopierOnglet(Fname)
 


Message édité par fusion_sadam le 25-05-2005 à 11:14:58
n°1097557
corran
Posté le 26-05-2005 à 09:06:40  profilanswer
 

un petit up pour le reste

n°1098229
fusion_sad​am
:D
Posté le 26-05-2005 à 15:24:46  profilanswer
 

ben c'est un peu vague ce que tu demande, sur quoi tu bloque exactement ?
 
si tu veux rechercher une cellule dans une colonne je crois qu'il ya une fonction pour ca
 
sinon tu peux la programmer toi meme, voici la fonction Place que j'utilise pour trouver la éniéme place d'un élément dans un vecteur
je l'ai un peu modifié pour que ca marche sur des colonnes
 
à placer dans un Module
 

Code :
  1. Public Function PLACE2(ByVal ELT As Integer, _
  2.                        ByVal Lig As Integer, _
  3.                        ByVal Col As Integer) As Integer
  4. Dim I         As Integer  'Compteur
  5. Dim P         As Integer  'Place de l'élement trouvé ( =0 Si non Trouvé)
  6. Dim MaCellule As Range    'Cellule à comparer
  7. 'Initialisation
  8. I = Lig
  9. P = 0
  10. Set MaCellule = Cells(I, Col)
  11. 'Boucle de recherche, s'arrete si l'élément recherché est trouvé
  12. 'où à la premiere cellule vide trouvé
  13. While MaCellule.Value <> "" And P = 0
  14.     If MaCellule.Value = ELT Then
  15.         P = I
  16.        Else
  17.         I = I + 1
  18.         Set MaCellule = Cells(I, Col)
  19.     End If
  20.    
  21. Wend
  22. PLACE = P
  23. End Function


 
 
Exemple pour y faire appel
 
'Recherche la valeur 3 dans la premiére colonne  
'à partir de la premiere cellule
 
MsgBox (PLACE(3, 1, 1))

n°1100164
corran
Posté le 28-05-2005 à 02:08:22  profilanswer
 

je ne bloque sur rien, je ne sais même pas par quoi commencer.
 
je ne veux pas rechercher une cellule dans une colonne, je veux :
- trouver toutes les cellules d'une colonne inférieures à une valeur définie, et si possible que cette valeur puisse varier en fonction d'un critère présent sur les lignes (ie une sous famille)
- avoir une comparaison systématique par ligne des valeurs de deux colonnes, sachant que si sur la ligne x la colonne B est inférieure à la colonne A, ce n'est pas normal, et je dois donc le savoir.
 
je ne sais pas si excel est capable de faire ça, c'est pour ça que je demande.
si ce n'est pas possible, je m'en remettrai ; si c'est possible et que quelqu'un sait à peu près comment faire, eh bien je veux bien qu'il me dise.


Message édité par corran le 28-05-2005 à 02:09:53
n°1100173
galopin01
Posté le 28-05-2005 à 06:17:52  profilanswer
 

bonjour,
A vue de nez, parce que la présentation est quand même assez vague...
Le format conditionnel pourrait sans doute répondre au moins partiellement (pour le point 2) à ta préoccupation.
Format / Mise en Forme Conditionnelle...
La Valeur de la cellule est ....supérieure à ...la cellule d'à coté
Alors -> Mise en forme Format Rouge (par exemple)
Pour le point 1 c'est trop vague pour répondre.
Tu pourrais mettre un petit fichier joint explicatif sur  
http://cjoint.com/index.php
A+

n°1101462
fusion_sad​am
:D
Posté le 30-05-2005 à 11:45:57  profilanswer
 

corran a écrit :

je ne veux pas rechercher une cellule dans une colonne, je veux :
- trouver toutes les cellules d'une colonne inférieures à une valeur définie, et si possible que cette valeur puisse varier en fonction d'un critère présent sur les lignes (ie une sous famille)


 
Pour trouver toute les cellules faut deja savoir en trouver une, et les criteres sont a mettre dans la fonction de je t'ai donnée
 
Mais comme galopin je pense que le format confitionnel pourrais deja beaucoup t'avancer.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [VBA Excel macro]réutilisation de variable + comparaisons auto

 

Sujets relatifs
problème VBA Access : "Procédure trop grande"Comparaison de dates sous VBA
Bouton d'action et lancement de macro avec arguments[javascript]Définir variable
[VB.NET] Pb de variableMacro word exporter vers excel
menu déroulant vba => excelc++ et excel
[excel]Tester le contenu d'une cellule 
Plus de sujets relatifs à : [VBA Excel macro]réutilisation de variable + comparaisons auto


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR