tout va bien , pas de problème encore pour ce soir.
sauf que pour aller plus vite dans le traitement d'une plage de cellule, je voulais utiliser cette macro
Code:
For Each c In Range("extraction_plate_cplt")
If c.Interior.ColorIndex = 35 Then c.Value = Sheets("table").Cells(ligne_nom + I, col_nom).Value
I = I + 1
mais voila que le traitement des cellules se fait en ligne.
Peut on faire pour que le traitement des cellules ce fasse verticalement ? :/
sinon je ne vois que le passage par une double boucle
j'ai ce code qui marche mais j'ai l'impression que c'est plus long :
(affichage, events et calculs désactivés)
Code:
For Y = 1 To 12
For I = 1 To 8
If Cells(I + 4, Y + 2).Interior.ColorIndex = 35 Then Cells(I + 4, Y + 2).Value = Sheets("table").Cells(ligne_nom + Z, col_nom).Value
Z = Z + 1
Next I
Next Y
Bonsoir fifi et Pascal, bonsoir à toutes et à tous
fifi à dit:
j'ai ce code qui marche mais j'ai l'impression que c'est plus long :
(affichage, events et calculs désactivés)
Code:
For Y = 1 To 12
For I = 1 To 8
If Cells(I + 4, Y + 2).Interior.ColorIndex = 35 Then Cells(I + 4, Y + 2).Value = Sheets("table").Cells(ligne_nom + Z, col_nom).Value
Z = Z + 1
Next I
Next Y
la désactivation de l'affichage, des events et calculs n'a pas de rapport c'est juste pour accélérer le traitement, . le classeur fait 4Mo et il y a pas mal de formule et macro événementiels.
la liste de noms peut ne pas faire 96 cellules (8*12) , du coup je voulais que ma plage se remplisse de haut en bas et de gauche a droite pour faciliter la lecture et surtout l'utilisation de la plage.
mais il semble qu'il n'y ait pas d'option pour que le For each fasse le boulot dans le bon sens, enfin mon sens ^^.
Si vraimetn tu cherches la rapidité le plus rapide est de mettre ton résultat dans une variable tableau et ensuite de collet ton tableau dans ta feuille
si tu fais une petite recherche sur le forum tu trouveras un fil assez ancien où on s'était amusé à faire la macro la plus rapide et tu auras dedans des exemples de tableaux de variables utilisés et il n'y avait pas photo
For Col = 3 To 14
For Each C In Range(Cells(5, Col), Cells(12, Col))
If C.Interior.ColorIndex = 35 Then
C.Value = Sheets("table").Cells(ligne_nom + Li, col_nom).Value
Li = Li + 1
End If
Next
Next
à toi de tester avec ton fichier pour la rapidité !