[VBA] Faire un boucle dans le code
Fermé
ecnet
Messages postés
5
Date d'inscription
dimanche 2 juillet 2006
Statut
Membre
Dernière intervention
3 juillet 2006
-
2 juil. 2006 à 22:08
ecnet - 4 juil. 2006 à 09:59
ecnet - 4 juil. 2006 à 09:59
A voir également:
- [VBA] Faire un boucle dans le code
- Le code ascii - Guide
- Code puk bloqué - Guide
- Comment déverrouiller un téléphone quand on a oublié le code - Guide
- Code activation windows 10 - Guide
- Comment créer un qr code - Guide
6 réponses
Kobaya
Messages postés
282
Date d'inscription
vendredi 28 mai 2004
Statut
Membre
Dernière intervention
10 janvier 2008
214
3 juil. 2006 à 14:31
3 juil. 2006 à 14:31
voici les deux boucles fusionnées en une seule :
Par contre, je ne comprends pas "si les conditions AB et 12 sont remplies". La valeur 12 est-elle contenue dans une variable ? Est-ce du texte (String) ou du numérique (Integer ou Byte) ?
Sub Macro1() Dim vecteur_GB(1 To 6) As String Dim vecteur_FR(1 To 6) As String Dim vecteur_CH(1 To 6) As String Dim vecteur_PL(1 To 6) As String Dim j As Single For j = 1 To 6 vecteur_GB(j) = Sheets("Base").Range("B2").Offset(j - 1, 0).Value vecteur_CH(j) = Sheets("Base").Range("C2").Offset(j - 1, 0).Value Next j For j = 1 To 6 Select Case vecteur_GB(j) Case "Déjeuner" vecteur_FR(j) = "Dîner" Case "Matin" vecteur_FR(j) = "Soir" End Select Select Case vecteur_CH(j) Case "AB" vecteur_PL(j) = "CD" Case "EF" vecteur_PL(j) = "GH" Case "IJ" vecteur_PL(j) = "KL" End Select Next j For j = 1 To 6 Sheets("Base").Range("J2").Offset(j - 1).Value = vecteur_FR(j) Sheets("Base").Range("K2").Offset(j - 1).Value = vecteur_PL(j) Next j End Sub
Par contre, je ne comprends pas "si les conditions AB et 12 sont remplies". La valeur 12 est-elle contenue dans une variable ? Est-ce du texte (String) ou du numérique (Integer ou Byte) ?
ecnet
Messages postés
5
Date d'inscription
dimanche 2 juillet 2006
Statut
Membre
Dernière intervention
3 juillet 2006
2
3 juil. 2006 à 17:13
3 juil. 2006 à 17:13
Le code est devenu effectivement beaucoup plus léger d'un coup.
Je reformule ma deuxième question autrement:
Dans le code que tu vu pour la première fois, je prends l'exemple de "If vecteur_CH(k) = "AB" Then
vecteur_PL(k) = "CD"
...
Ce que je voulais faire maintenant, c'est de pouvoir ajouter une condition dans "If vecteur_CH = "AB" (et "GH" dans une cellule d'une autre colonne mais de la même ligne) Then
vecteur_PL(k) = "CD"
Quelle bon code dois-je entrer?
Suffit-il d'ajouter comme suit: If vecteur_CH = "AB" and "GH"..., mais ça ne marche pas? ou alors il faudrait que je fais:
For k=1 To 6
vecteur _CH(k) = Sheets("Base").Range("C2" et "P2").Offset(k-1,0).Value
Next k
NB: "P2" étant cette "autre" colonne
J'espère que tu pourras m'aider sur ce point.
Je reformule ma deuxième question autrement:
Dans le code que tu vu pour la première fois, je prends l'exemple de "If vecteur_CH(k) = "AB" Then
vecteur_PL(k) = "CD"
...
Ce que je voulais faire maintenant, c'est de pouvoir ajouter une condition dans "If vecteur_CH = "AB" (et "GH" dans une cellule d'une autre colonne mais de la même ligne) Then
vecteur_PL(k) = "CD"
Quelle bon code dois-je entrer?
Suffit-il d'ajouter comme suit: If vecteur_CH = "AB" and "GH"..., mais ça ne marche pas? ou alors il faudrait que je fais:
For k=1 To 6
vecteur _CH(k) = Sheets("Base").Range("C2" et "P2").Offset(k-1,0).Value
Next k
NB: "P2" étant cette "autre" colonne
J'espère que tu pourras m'aider sur ce point.
Kobaya
Messages postés
282
Date d'inscription
vendredi 28 mai 2004
Statut
Membre
Dernière intervention
10 janvier 2008
214
2 juil. 2006 à 22:55
2 juil. 2006 à 22:55
salut ecnet,
je n'ai eu eucun pb avec ton code.
oui, en changeant le nom de la feuille (entre guillemets), tu pourras utiliser ton code pour une autre feuille.
je n'ai eu eucun pb avec ton code.
oui, en changeant le nom de la feuille (entre guillemets), tu pourras utiliser ton code pour une autre feuille.
ecnet
Messages postés
5
Date d'inscription
dimanche 2 juillet 2006
Statut
Membre
Dernière intervention
3 juillet 2006
2
3 juil. 2006 à 12:16
3 juil. 2006 à 12:16
Merci pour ton aide. J'ai réssayé mon code et effectivement, ça marche.
J4ai pourtant encore une question qui reste en suspens, quel code dois-je ajouter si:
If vecteur_CH(k) = "AB" and "12" Then
vecteur_PL(k) = "CD"
Traduction de ce que j'aimerais faire: si les conditions AB et 12 sont remplies, alors on remplacera la cellule k par CD.
J'ai aussi une deuxième question: comment tu as pu voir dans mon code précédent, j'ai un certain nombre de macros qui font la même chose: for i=1 to 3000, etc. Comment écrire en une fois cette partie pour ne pas répéter à chaque fois lorsque'on écrit un macro?
Merci beaucoup!
J4ai pourtant encore une question qui reste en suspens, quel code dois-je ajouter si:
If vecteur_CH(k) = "AB" and "12" Then
vecteur_PL(k) = "CD"
Traduction de ce que j'aimerais faire: si les conditions AB et 12 sont remplies, alors on remplacera la cellule k par CD.
J'ai aussi une deuxième question: comment tu as pu voir dans mon code précédent, j'ai un certain nombre de macros qui font la même chose: for i=1 to 3000, etc. Comment écrire en une fois cette partie pour ne pas répéter à chaque fois lorsque'on écrit un macro?
Merci beaucoup!
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Kobaya
Messages postés
282
Date d'inscription
vendredi 28 mai 2004
Statut
Membre
Dernière intervention
10 janvier 2008
214
3 juil. 2006 à 17:24
3 juil. 2006 à 17:24
dans ce cas, il faut créer un tableau supplémentaire (ex. vecteur_X() qui sera initialisé avec les valeurs contenues dans la colonne P), et le test doit avoir 2 comparaisons :
If vecteur_CH(j) = "AB" and vecteur_X(j) = "GH' Then ... End If
ecnet
Messages postés
5
Date d'inscription
dimanche 2 juillet 2006
Statut
Membre
Dernière intervention
3 juillet 2006
2
3 juil. 2006 à 21:33
3 juil. 2006 à 21:33
Si je fais:
Select Case vecteur_CH(j)
Case "AB" and vecteur_X(j) = "GH'
vecteur_PL(j) = "CH"
...
End If
Il y a un problème de définiton du vecteur_X(j).
Apparemment, il faut définir le vecteur_X(j), mais comment si je reprends ton code que tu m'avais donné? Sous quelle synthaxe dans la boucle? En écrivant:
vecteur_X(j) = Sheets("Base").Range("A2").Offset(j - 1, 0).Value, ça ne marche pas? Pourquoi?
Select Case vecteur_CH(j)
Case "AB" and vecteur_X(j) = "GH'
vecteur_PL(j) = "CH"
...
End If
Il y a un problème de définiton du vecteur_X(j).
Apparemment, il faut définir le vecteur_X(j), mais comment si je reprends ton code que tu m'avais donné? Sous quelle synthaxe dans la boucle? En écrivant:
vecteur_X(j) = Sheets("Base").Range("A2").Offset(j - 1, 0).Value, ça ne marche pas? Pourquoi?
Kobaya
Messages postés
282
Date d'inscription
vendredi 28 mai 2004
Statut
Membre
Dernière intervention
10 janvier 2008
214
4 juil. 2006 à 00:33
4 juil. 2006 à 00:33
Case "AB" and vecteur_X(j) = "GH' :
ça, c'est pas possible !
pour vecteur_X(), tu dois pouvoir le remplir comme tu remplis vecteur_PL(), non ?
ça, c'est pas possible !
pour vecteur_X(), tu dois pouvoir le remplir comme tu remplis vecteur_PL(), non ?
Je précise encore alors.
Ce que je voulais, c'est si dans la colonne nommée CH, on a "AB" et dans la colonne CD, on a "GH", alors dans la colonne PL, on a "LM". "AB", "GH" et "LM" sont à la même ligne.
2ème question: tu sais comment lier les données de la plage E3 à G6 d'une feuille sur une autre de la plage K3 à M6?
Ce que je voulais, c'est si dans la colonne nommée CH, on a "AB" et dans la colonne CD, on a "GH", alors dans la colonne PL, on a "LM". "AB", "GH" et "LM" sont à la même ligne.
2ème question: tu sais comment lier les données de la plage E3 à G6 d'une feuille sur une autre de la plage K3 à M6?