For each avec traitement verticale

fifi

XLDnaute Occasionnel
Bonsoir le forum,

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

Code:
For I=1 to X
  For Y=1 to Z
  next Y 
next I
 

fifi

XLDnaute Occasionnel
Re : For each avec traitement verticale

la plage que je veux remplir fait 8lignes sur 12 colonne
je veux la remplir d'une liste de noms

mais le remplissage se faite de gauche a droite en commençant par la première ligne = traitement horizontale

mais je voulais que le remplissage se fait de haut en bas en commençant par la colonne de gauche= traitement verticale

:)
 

fifi

XLDnaute Occasionnel
Re : For each avec traitement verticale

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


moi joli qu'un for each ...je trouve
 

nolich

XLDnaute Occasionnel
Re : For each avec traitement verticale

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


moi joli qu'un for each ...je trouve

Si ton affichage est désactivé, pourquoi vouloir un remplissage de ton tableau par colonne ???

@+
 

fifi

XLDnaute Occasionnel
Re : For each avec traitement verticale

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 ^^.
 

vbacrumble

XLDnaute Accro
Re : For each avec traitement verticale

Bonsoir


Pourquoi de pas utiliser d'Array ?


Voici un exemple d'utilisation de tableau

Code:
Sub test()
Dim t(1 To 8, 1 To 12), i&, j&
For i = 1 To 8
    For j = 1 To 12
        t(i, j) = i * j
    Next
Next
[A1:L8] = t
End Sub
 

PascalXLD

XLDnaute Barbatruc
Modérateur
Re : For each avec traitement verticale

re

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
 

Fo_rum

XLDnaute Accro
Re : For each avec traitement verticale

Salut,

si "Each" te plait, tu peux essayer :
Code:
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é !
 

Discussions similaires

Réponses
29
Affichages
1 K

Statistiques des forums

Discussions
312 555
Messages
2 089 547
Membres
104 208
dernier inscrit
laura29180