Bonjour à tous,
une fois de plus je me tourne vers vous afin de sollicité vos lumières.
je souhaite combiner plusieurs boucle ensemble mais je ne trouve pas la bonne méthode pour arriver à mes fin.
j'ai une boucle " for" dans la quelle ce trouve une boucle "for each" jusque la tout va bien.
elle me permet de trouvé le nombre de valeur "x" dans une plage donnée (une ligne).
je voudrais reproduire le calcule sur chaque ligne grâce à une autre boucle mais je coince.
je joint un petit fichier pour être plus explicite.
Merci d'avance à tout ceux qui prendrons le temps de ce pencher sur mon problème.
Sub Test()
Application.ScreenUpdating = False
Range("L2:U6").ClearContents 'On efface le dernier contenu
For F = 9 To 18 'On boucle sur les valeurs de A9 à A18 (Val1, Val2, Val3 .....)
xVal = Cells(F, "A") 'On recupère dans une variable le contenu
For Lig = 2 To 6 'On boucle sur les lignes 2 à 6
xCpt = 0 'On met le compteur à zéro
For Each xCell In Range("B" & Lig & ":K" & Lig) 'On parcours toutes les colonnes de B à K de la ligne (Lig)
If xCell.Value = xVal Then 'Si la cellule testée = varaible Val
xCpt = xCpt + 1 'On incrémente le compteur
End If 'Fin Si
Next xCell 'Fin boucle colonne
Cells(Lig, 3 + F) = xCpt 'On ecrit dans la cellule (Lig, 3+F) la valeur du compteur
Next Lig 'Fin boucle Lig
Next F 'Fin boucle F
Application.ScreenUpdating = True
End Sub
Explication du 3+F
F va de 9 à 18 et vu que l'on souhaite écrire les réponses à partir de la colonne 12 (Colonne L),
- Quand F vaut 9 alors F+3 = 12 donc colonne L
- Quand F vaut 4 alors F+3 = 13 donc colonne M
- Quand F vaut 5 alors F+3 = 14 donc colonne N ........
Sub Test()
Application.ScreenUpdating = False
Range("L2:U6").ClearContents 'On efface le dernier contenu
For F = 9 To 18 'On boucle sur les valeurs de A9 à A18 (Val1, Val2, Val3 .....)
xVal = Cells(F, "A") 'On recupère dans une variable le contenu
For Lig = 2 To 6 'On boucle sur les lignes 2 à 6
xCpt = 0 'On met le compteur à zéro
For Each xCell In Range("B" & Lig & ":K" & Lig) 'On parcours toutes les colonnes de B à K de la ligne (Lig)
If xCell.Value = xVal Then 'Si la cellule testée = varaible Val
xCpt = xCpt + 1 'On incrémente le compteur
End If 'Fin Si
Next xCell 'Fin boucle colonne
Cells(Lig, 3 + F) = xCpt 'On ecrit dans la cellule (Lig, 3+F) la valeur du compteur
Next Lig 'Fin boucle Lig
Next F 'Fin boucle F
Application.ScreenUpdating = True
End Sub
Explication du 3+F
F va de 9 à 18 et vu que l'on souhaite écrire les réponses à partir de la colonne 12 (Colonne L),
- Quand F vaut 9 alors F+3 = 12 donc colonne L
- Quand F vaut 4 alors F+3 = 13 donc colonne M
- Quand F vaut 5 alors F+3 = 14 donc colonne N ........