Bonjour,

Je débute en VBA, et je bloque sur une chose.


je me suis fait une macro pour copier une liste de colonnes d'une feuille vers un autre. Lorsque je précise dans la macro quelles colonnes copié, pas de souci.
Par contre je souhaiterais pouvoir rendre le choix des colonnes à copier interactif (en demandant lors de l'exécution de la macro quelles colonnes copier).

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
 
Sub decla_var()                   ' macro pour demander le workbook, la sheet_source et destination, ainsi que les colonnes que la personne souhaite copier
wb = InputBox("Sur quel fichier voulez-vous travaillez ? :")
sh_s = InputBox("quelle est la feuille source ? :")
sh_d = InputBox("quelle est la feuille destination ? :")
choix_colonnes = InputBox("quelles colonnes souhaitez-vous copier (séparer chaque colonne par ", "une virgule) ? :")
End Sub
 
Sub copie_colonnes()
Dim col                                                         ' col : colonne source
Dim i As Integer
 
Workbooks(wb).Activate                                          ' on se place sur le fichier concerné
Sheets.Add after:=Sheets(Sheets.Count)                          ' ajouter une nouvelle feuille à la fin
ActiveSheet.Name = sh_d                                         ' on renomme la nouvelle feuille avec la valeur saisie précédemment
Sheets(sh_s).Select                                             ' on se place sur la feuille source
i = 1
 
For Each col In Array(choix_colonnes)
    Columns(col).Copy Destination:=Sheets(sh_d).Cells(1, i)     ' on copie la colonne vers la nouvelle feuille
    i = i + 1                                                   ' on incrémente i pour que le prochain copier soit fait sur la colonne suivante
Next
 
Do While (Workbooks(wb).Sheets(sh_d).Range("A1") = "")          ' tant que A1 est vide, on appel la macro de suppr de ligne
    Call del_line(wb, sh_d, "1")                                ' appel de la macro suppr de ligne
Loop
 
End Sub
 
Sub test_temp()                   ' la macro pour mon test temporaire
Call decla_var
Call copie_colonnes
 
End Sub
Je vois bien que le souci vient du fait que la variable choix_colonnes ne prend pas une valeur correcte ("AO,B,D" lorsque je saisi dans le champ de saisie AO,B,D)
Mais je ne vois pas comment je pourrais faire

Est-ce que quelqu'un pourrait m'aider ?

Merci,