J'essaie d'insérer une colonne dans plusieurs feuilles de mon classeur (mais pas toutes). Comme je vais devoir souvent agir sur cette sélection de feuilles, j'ai d'abord tenté de créer un vecteur contenant le nom de feuilles en question pour ne pas avoir à les écrire à nouveau à chaque fois :
Dans mon code général :
Public Noms_feuilles
Sub InitialiseNoms_feuilles()
Noms_feuilles = Array("ONF_COFOR", "CNPF_Fran", "Agri", "INRA", "AutRECH", "Enseigt", "PNR-Envt", "Décideurs", "Presse", "Etranger", "Coop-Exp", "Bois-Pépin", "CETEF", "Autre")
End Sub
Puis j'ai créé une boite de dialogue où l'utilisateur entre le nom de la colonne et appuie sur ok.
Ok déclenche :
Private Sub ButtonOK_Click()
'Insère la colonne dans toute les feuilles du classeur contenant des contacts
Dim i As Integer
For i = 1 To 14
Sheets(Noms_feuilles(i)).Columns("BV").Insert
Next i
Call Unload(Me)
End Sub
Cela ne fonctionne pas ...
Une idée ? Malgré mes recherches je n'ai pas trouvé d'aide ailleurs.
Bonjour,
merci pour votre réponse,
Je change ma boucle. Pour le nom de la colonne, je souhaite que l'utilisateur entre un nom qui sera le nom de la colonne, donc la valeur présente dans la première cellule de ma colonne. Donc j'insère d'abord une colonne (vide) en colonne BV pour cahque feuille. Ensuite j'ajouterai que la valeur de la première cellule de cette colonne dans la même boucle.
La partie qui me pose problème est que je n'arrive pas à insérer une colonne vide dans les feuille que je souhaite, le nom de ces feuilles étant stocké dans un vecteur.
J'ai maintenant une erreur "incompatibilité de type" avec une débogage demandé sur l'instruction :
Sheets(Noms_feuilles(i)).Columns("BV").Insert
Je remets le code au complet :
Définition de la variable public :
Public Noms_feuilles
Sub InitialiseNoms_feuilles()
Noms_feuilles = Array("ONF_COFOR", "CNPF_Fran", "Agri", "INRA", "AutRECH", "Enseigt", "PNR-Envt", "Décideurs", "Presse", "Etranger", "Coop-Exp", "Bois-Pépin", "CETEF", "Autre")
End Sub
Code associé au bouton :
Private Sub ButtonOK_Click()
'Insère la colonne dans toute les feuilles du classeur contenant des contacts
Dim i As Integer
For i = 0 To 13
Sheets(Noms_feuilles(i)).Columns("BV").Insert
Next i
Call Unload(Me)
End Sub
NB : je ne parviens pas à baliser le code de manière à ce qu'il soit plus lisible pour vous ...
Le 1er code doit être placé dans un module standard (Module1) :
VB:
Public Noms_feuilles
Sub InitialiseNoms_feuilles()
Noms_feuilles = Array("ONF_COFOR", "CNPF_Fran", "Agri", "INRA", "AutRECH", "Enseigt", "PNR-Envt", "Décideurs", "Presse", "Etranger", "Coop-Exp", "Bois-Pépin", "CETEF", "Autre")
End Sub
Bien sûr il faut que toutes les feuilles listées existent.
En outre la macro doit être exécutée avant de lancer la 2ème macro, pour en être sûr utiliser dans l'UserForm :
VB:
Private Sub ButtonOK_Click()
Dim i As Integer
InitialiseNoms_feuilles 'lance la macro
For i = 0 To 13
Sheets(Noms_feuilles(i)).Columns("BV").Insert
Next i
Unload Me
End Sub
Le 1er code doit être placé dans un module standard (Module1) :
VB:
Public Noms_feuilles
Sub InitialiseNoms_feuilles()
Noms_feuilles = Array("ONF_COFOR", "CNPF_Fran", "Agri", "INRA", "AutRECH", "Enseigt", "PNR-Envt", "Décideurs", "Presse", "Etranger", "Coop-Exp", "Bois-Pépin", "CETEF", "Autre")
End Sub
Bien sûr il faut que toutes les feuilles listées existent.
En outre la macro doit être exécutée avant de lancer la 2ème macro, pour en être sûr utiliser dans l'UserForm :
VB:
Private Sub ButtonOK_Click()
Dim i As Integer
InitialiseNoms_feuilles 'lance la macro
For i = 0 To 13
Sheets(Noms_feuilles(i)).Columns("BV").Insert
Next i
Unload Me
End Sub