Créer autant de checkbox qu'il y a de feuilles

zikkmu

XLDnaute Nouveau
Bonjour,

N'ayant pas trouvé de réponse sur le forum, je me lance dans un nouveau sujet, voici le contexte:

Mon classeur excel comporte entre 1 et 12 feuilles correspondant aux mois de l'année "janvier2012" par exemple.

J'ai écrit une macro pour modifier la forme de ce classeur et l'exporter à un emplacement bien défini mais voilà, il y a beaucoup de données à traiter donc le travail de la macro est long...


Mon idée: limiter le travail de cette macro à quelques feuilles que l'utilisateur peut séléctionner via un userform avant l'éxecution de la macro. Voici donc ma question:

Comment créer un userform avec autant de checkbox que le classeur courant contient de feuilles, et comment mettre en label de ces checkboxes le nom de la feuille correspondante?

Par la suite, je récupère les feuilles que l'utilisateur a sélectionné et je leur applique ma macro.

Merci à tous d'avance
 

Pièces jointes

  • exemple.xlsx
    250.3 KB · Affichages: 75
  • exemple.xlsx
    250.3 KB · Affichages: 75
  • exemple.xlsx
    250.3 KB · Affichages: 77

Robert

XLDnaute Barbatruc
Repose en paix
Re : Créer autant de checkbox qu'il y a de feuilles

Bonjour Zikmmu et bienvenu, bonjour le forum,

Plutôt que des chekboxes qui impliquent la gestion de la taille de l'UserForm en fonction du nombre d'onglets, pourquoi pas une simple ListBox ?

Un exemple en pièce jointe :
 

Pièces jointes

  • Zikkmu_v01.xls
    31 KB · Affichages: 90

zikkmu

XLDnaute Nouveau
Re : Créer autant de checkbox qu'il y a de feuilles

J'ai modifié ton code pour arriver à mes fins mais ça bloquesur un truc tout simple mais je vois pas quoi, étant tout nouveau du VBA... Voici le code:


Code:
Private Sub CommandButton1_Click() 'bouton "Ok"
Dim i As Byte 'déclare la variable i (Incrément(
Dim msg As String 'déclare la variable msg (MeSsaGe)
Dim sh As Sheets, nsh As Sheets
Dim newbook As Workbook
Set newbook = Workbooks.Add()
msg = "Les Onglets suivants on été sélectionnées :" & Chr(13) 'définit le message msg
For i = 0 To Me.ListBox1.ListCount - 1 'boucle sur tous les éléments de la ListBox1
    'si l'élément est sélectionné, ajoute le nom de l'élément au message
    If Me.ListBox1.Selected(i) = True Then msg = msg & Me.ListBox1.List(i) & Chr(13)
    sh = Sheets(Me.ListBox1.List(i))
    nsh = MEF_INTERNET(Sheets(Me.ListBox1.List(i)))
    Sheets(nsh).Copy After:=Workbooks(newbook).Sheets(1)
Next i 'prochain élément de la boucle
MsgBox msg 'message

newbook.SaveAs Filename:="C:/TDS_INTERNET.xls"
End Sub

Ca bloque à la ligne "sh = Sheets....." et ça me mets "Erreur de compilation utilisation incorrecte de la propriété"


As-tu une idée?
 
Dernière édition:

Robert

XLDnaute Barbatruc
Repose en paix
Re : Créer autant de checkbox qu'il y a de feuilles

Bonsoir Zikkmu, bonsoir le forum,

sh et nsh sont des variables objet. Il leur faut le Set devant :
Code:
Set sh = Sheets(Me.ListBox1.List(i))
Set nsh = MEF_INTERNET(Sheets(Me.ListBox1.List(i)))
 

zikkmu

XLDnaute Nouveau
Re : Créer autant de checkbox qu'il y a de feuilles

Ça m'étonne que ce soit MEF_INTERNET car j'ai l'erreur une ligne plus haut, mais sinon c'est un module qui prend une Sheet en argument et qui renvoie une Sheet, je colle le code dès que je peux...
 

zikkmu

XLDnaute Nouveau
Re : Créer autant de checkbox qu'il y a de feuilles

Ça m'étonne que ce soit MEF_INTERNET car j'ai l'erreur une ligne plus haut, mais sinon c'est un module qui prend une Sheet en argument et qui renvoie une Sheet, je colle le code dès que je peux...
 

zikkmu

XLDnaute Nouveau
Re : Créer autant de checkbox qu'il y a de feuilles

Je confirme que ça ne vient pas de MEF_INTERNET, lorsque je supprime la ligne, l'erreur est toujours là.

J'ai l'impression que sh est Sheets(nom) ne sont pas du même type ce qui provoque l'erreur...
 

zikkmu

XLDnaute Nouveau
Re : Créer autant de checkbox qu'il y a de feuilles

Bonjour et bon week end à tous,

J'ai finalement réussi et supprimant ma MEF_INTERNET, probablement mal déclarée, et en insérant le code directement dans l'userform.

Merci à tous
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 668
Messages
2 090 739
Membres
104 644
dernier inscrit
MOLOKO67