VBA créer une liste et la parcourir

Bonjour à tous,

j'aurais besoin d'un petit coup de main sur un problème VBA très simple. J'aimerais juste créer une liste ou un tableau, contenant des chaînes de caractère. Et pouvoir ensuite avec une boucle, appliquer une fonction à ces différentes chaînes de caractères.

Mon code qui ne marche pas car la syntaxe doit être affreuse (je ne parviens pas à trouver de choses claires sur internet, je trouve ça mal expliqué!) est le suivant:

Sub TroisDTriDonnees()
Dim PL()

Set PL = Array("Date de la demande de FDO", "FDO non répondue", "Date de propale demandée", "Date de propale réelle", "Date acceptation propale", "CA", "Date de livraison prévue", "Date de livraison réelle", "Retard", "Nb de rework")

For i = 2 To 20

    For j = LBound(PL) To UBound(PL)
        CopierCollerCol (PL(j))
    Next j

Next

End Sub

J'ai testé d'autres choses du même genre avec split, [], mais sans succès. Quelqu'un pourrait-il m'aider ?

Merci !

Bonn journée,

SkillzZ

Bonjour,

Bé ! on sait pas ce que tu fais ! Mais tu le fais 19 fois ! Et on ne sait pas plus ce que tu veux faire !

Cordialement.

MFerrand a écrit :

Bonjour,

Bé ! on sait pas ce que tu fais ! Mais tu le fais 19 fois ! Et on ne sait pas plus ce que tu veux faire !

Cordialement.

Bin.. il veut "CopierCollerCol (PL(j))" tiens

P.

Oui ! Mais PL est un tableau. Ça ne se copiecolle pas !

CopierCollerCol est sans doute une procédure, mais que peut-elle faire à chacun des éléments du tableau ? Si elle le flanque quelque part, chacun va se substituer au précédent... !

En outre, pourquoi PL(j) est-il mis entre parenthèses ? Cela ne devrait normalement pas...

On verra plus tard, pour l'instant je m'en vais !

Oui désolé j'ai pas été très précis effectivement !

Mais j'ai avancé dans mon code. Je bug maintenant à un autre endroit. Mon code pour le moment est le suivant:

Sub TroisDTriDonnees()
Dim Tableau(9) As String
Dim j As Integer

Tableau(0) = "Date de la demande de FDO"
Tableau(1) = "FDO non répondue"
Tableau(2) = "Date de propale demandée"
Tableau(3) = "Date de propale réelle"
Tableau(4) = "Date acceptation propale"
Tableau(5) = "CA"
Tableau(6) = "Date de livraison prévue"
Tableau(7) = "Date de livraison réelle"
Tableau(8) = "Retard"
Tableau(9) = "Nb de rework"

For i = 1 To 10

    For j = 0 To 9
        CopierCollerCol (Tableau(j))
    Next j

Next i

End Sub

Function CopierCollerCol(NomColonne As String)
Dim X As Range
Dim COL As Byte

Set X = ActiveSheet.Rows(1).Find(NomColonne, , xlValues, xlWhole)

If Not X Is Nothing Then COL = X.Column

ActiveSheet.Range(Cells(1, COL), Cells(100, COL)).Copy
ActiveWorkbook.Worksheets("Target").Cells(1, i).PasteSpecial Paste:=xlPasteValues
End Function

J'ai donc à priori résolu le souci du "tableau" bien qu'à mon avis mon code ne soit pas optimisé. Mais j'ai un autre souci dans la fonction CopierCollerCol au niveau du surlignage. J'ai une erreur de type "Erreur définie par l'application ou par l'objet". J'ai le même problème lorsque j'écris ActiveSheet.Range(Activesheet.Cells(1, COL), Activesheet.Cells(100, COL)).Copy.

Pourriez-vous m'aider ?

SkillzZ

S'il y a une erreur sur cette ligne, cela ne peut venir que du cas où la recherche échoue, X n'est pas définie et à la suite Col ne l'est pas non plus. Et comme ta condition ne couvre pas la copie, celle-ci cherche à s'exécuter...

Cordialement.

Rechercher des sujets similaires à "vba creer liste parcourir"