|
|
|
|
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. A+, Kobaya. |
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! |
voici les deux boucles fusionnées en une seule :
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) ? A+, Kobaya. |
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. |
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 IfA+, Kobaya. |
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?
|