Hiérarchisation des macros
Résolu/Fermé
padbollevrai
Messages postés
51
Date d'inscription
mercredi 1 avril 2009
Statut
Membre
Dernière intervention
18 mars 2015
-
7 mai 2014 à 12:49
padbollevrai Messages postés 51 Date d'inscription mercredi 1 avril 2009 Statut Membre Dernière intervention 18 mars 2015 - 7 mai 2014 à 16:50
padbollevrai Messages postés 51 Date d'inscription mercredi 1 avril 2009 Statut Membre Dernière intervention 18 mars 2015 - 7 mai 2014 à 16:50
A voir également:
- Déclaration existante dans la portée en cours
- Macros word - Guide
- My macros - Télécharger - Organisation
- Activer les macros excel android ✓ - Forum Excel
- La macro est introuvable ou a été désactivée en raison de vos paramètres de sécurité des macros ✓ - Forum LibreOffice / OpenOffice
- Ez macros - Télécharger - Divers Utilitaires
4 réponses
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 752
7 mai 2014 à 13:15
7 mai 2014 à 13:15
Bonjour,
Il te faut donc une fonction (ou une procédure) avec en paramètre, la colonne. Comme ceci :
Tu peux même faire une boucle dans ton main avec un select case etc...
Genre :
Il te faut donc une fonction (ou une procédure) avec en paramètre, la colonne. Comme ceci :
Sub Main() If [A3] = "count" Then Call Filling_Count(1) If [A3] = "time" Then Call Filling_Time(1) If [B3] = "count" Then Call Filling_Count(2) If [B3] = "time" Then Call Filling_Time(2) 'etc... End Sub Sub Filling_Count(NumCol As Integer) With columns(NumCol) 'blabla End With End Sub Sub Filling_Time(NumCol As Integer) With columns(NumCol) 'blabla End With End Sub
Tu peux même faire une boucle dans ton main avec un select case etc...
Genre :
For Col = 1 To 12 Select Case Cells(3, Col) Case "count" Call Filling_Count(Col) Case "min" Call Filling_Min(Col) Case "max" Call Filling_Max(Col) Case "Time" Call Filling_Time(Col) Case Else MsgBox "Erreur Fatale" End Select Next
padbollevrai
Messages postés
51
Date d'inscription
mercredi 1 avril 2009
Statut
Membre
Dernière intervention
18 mars 2015
1
7 mai 2014 à 14:24
7 mai 2014 à 14:24
Wow ! Excellent, merci beaucoup !
Maintenant, dans mes sous-macro, comment remplacer la lettre le la colonne par la variable "Col" ?
Exemple, si j'ai un Range("B" & K).Value, il suffit de mettre Range("Col" & K) ?
Merci
Maintenant, dans mes sous-macro, comment remplacer la lettre le la colonne par la variable "Col" ?
Exemple, si j'ai un Range("B" & K).Value, il suffit de mettre Range("Col" & K) ?
Merci
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 752
7 mai 2014 à 15:20
7 mai 2014 à 15:20
La syntaxe Cells est adaptée à cette situation :
Cells(Ligne, Colonne).Value
Range("B3") est égal à Cells(3, 2)
Cells(Ligne, Colonne).Value
Range("B3") est égal à Cells(3, 2)
padbollevrai
Messages postés
51
Date d'inscription
mercredi 1 avril 2009
Statut
Membre
Dernière intervention
18 mars 2015
1
Modifié par padbollevrai le 7/05/2014 à 16:28
Modifié par padbollevrai le 7/05/2014 à 16:28
Merci beaucoup.
Dernière chose: Tu as mis
Or, à la place de "Erreur fatale" en cas de "case else", j'aimerais qu'il passe à la valeur suivante. J'ai donc mis un Next à la place de MsgBox "Erreur Fatale", mais cela fait un doublon de Next... Et il me fait une erreur à la compilation.
Suffit-il de ne rien mettre ou y a-t-il quelque chose de particulier ?
Autre souci: Dans une de mes sous-macro, une erreur de compilation stipule "Déclaration existante dans la portée en cours" sur "Dim Col as Integer".
Je ne déclare qu'une fois cette variable, je ne comprends pas cette erreur, d'autant que les autres sous-macros situées plus haut dans le code n'ont pas renvoyé cette erreur.
Merci
Dernière chose: Tu as mis
For Col = 1 To 12 Select Case Cells(3, Col) Case "count" Call Filling_Count(Col) Case "min" Call Filling_Min(Col) Case "max" Call Filling_Max(Col) Case "Time" Call Filling_Time(Col) Case Else MsgBox "Erreur Fatale" End Select Next
Or, à la place de "Erreur fatale" en cas de "case else", j'aimerais qu'il passe à la valeur suivante. J'ai donc mis un Next à la place de MsgBox "Erreur Fatale", mais cela fait un doublon de Next... Et il me fait une erreur à la compilation.
Suffit-il de ne rien mettre ou y a-t-il quelque chose de particulier ?
Autre souci: Dans une de mes sous-macro, une erreur de compilation stipule "Déclaration existante dans la portée en cours" sur "Dim Col as Integer".
Je ne déclare qu'une fois cette variable, je ne comprends pas cette erreur, d'autant que les autres sous-macros situées plus haut dans le code n'ont pas renvoyé cette erreur.
Merci
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 752
7 mai 2014 à 16:39
7 mai 2014 à 16:39
Tu ne mets rien dans le Case Else.
Déclaration existante dans la portée en cours
regarde bien,, tu dois avoir une variable Col Déclarée deux fois.
Remplace par Colonne....
Déclaration existante dans la portée en cours
regarde bien,, tu dois avoir une variable Col Déclarée deux fois.
Remplace par Colonne....
padbollevrai
Messages postés
51
Date d'inscription
mercredi 1 avril 2009
Statut
Membre
Dernière intervention
18 mars 2015
1
Modifié par padbollevrai le 7/05/2014 à 17:40
Modifié par padbollevrai le 7/05/2014 à 17:40
J'ai réussi à m'en sortir, tout est Ok !
Je mettais en fait "Dim Col as Integer" dans le Main ET dans chaque macro.
Merci beaucoup !
Je mettais en fait "Dim Col as Integer" dans le Main ET dans chaque macro.
Merci beaucoup !