Re : créer ne boucle
Dim nom(150) : dimensionne un tableau utilisé dans la boucle sur Feuille 2
Dim ligne(150) : idem mais n'est plus utilisé
Dim numero As Integer : Définit la variable numero comme étant un nombre entier
Dim nm As String : définit une chaine de caractères (alpha et alphanumérique)
Dim dte As Date : une date
Dim j As Integer
Dim i As Integer
Sub essai()
Sheets("Feuil2").Activate : ouvre la feuille 2
j = 1
For i = 5 To 10 : une boucle dans la feuille 2 de la ligne 5 à la ligne 10
nom(j) = Cells(i, 1) : A chaque boucle, la valeur de la cellule (ligne 5, colonne 1) est
stockée dans une variable nom(1)
: au premier passage puis nom(2) au deuxième passage (en effet j j est incrémenté de 1 à chaque passage
j = j + 1 :
Next i : i passe à 6 pour le deuxième passage et retourne à nom(j)=cells(i,1) et ainsi
de suite jusqu'à 10
après la dernière itération,
nb = j : stockage du nombre de noms trouvés dans la varable nb
dte = Range("A12").Value : récupération de la date de la cellule "A12" dans la variable
dte
numero = Range("A15").Value : récupération de cellule "A15" dans la variable numero
Sheets("Feuil1").Activate
derl = Range("iv20").End(xlToLeft).Column : dernière colonne utilisée ligne 20
For i = 22 To 30 : boucle sur la feuille 1 (30 ou dernière ligne de la feuille)
nm = Cells(i, 1) : stockage de la valeur de la cellule (ligne22, colonne 1) dans nm
If nm = "" Then i = 30: GoTo fin :sortir de la boucle s'il n'y a plus de valeur à traiter
For j = 1 To nb
If nm = nom(j) Then : comparer chaque nom nm à tous les noms stockés dans
les variables indicées nom(1) à nom(nb)
maj :Appel du programme maj (ci-dessous)
j = nb
End If
Next j : tant que j n'est pas égal à nb on boucle
fin:
Next i : on passe à la ligne suivante de la feuille 1 et on
recommence
End Sub
Fonctions du programme maj appelé par le programme essai : on boucle sur toutes les colonnes de la ligne 20 pour trouver la date qui correspond à dte
Si oui : écriture de la variable numero dans la cellule correspondante
Attention, lorsque l'on veut utiliser une variable dans plusieurs procédures d'un même module, il faut les définir au dessus de la première procédure
Sub maj()
Sheets("Feuil1").Activate
For k = 6 To 25
If Cells(20, k) = dte Then col = k: k = 25
Next k
Cells(i, col) = numero
' Sheets("Feuil2").Activate
End Sub