Combobox et UserForm

  • Initiateur de la discussion Initiateur de la discussion tontonced
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

T

tontonced

Guest
bonjour,

J'essaye de faire une macro VBA mais je n'y arrive pas. Je débute, mais je pense que ça sera assez simple pour vous... En fait je voudrais créer une macro qui me permettra d'insérer des fichiers excel que j'aurais ouvert au préalable. Je voudrais les copier / coller dans la feuil2 de ma macro. Je vous joins mon début de code.

Merci pour votre aide

Cdt
 

Pièces jointes

Re : Combobox et UserForm

Bonjour Tontonced, bonjour le forum,

En fait je voudrais créer une macro qui me permettra d'insérer des fichiers excel que j'aurais ouvert au préalable. Je voudrais les copier / coller dans la feuil2 de ma macro.

C'est pas qu'on veut pas t'aider mais, pour ma part, je ne comprends absolument pas ta demande. Coller un fichier dans la feuille 2 d'une macro ??? Si tu veux copier les données d'un onglet source dans l'onglet Feuil2 de ton fichier Test bouton.xls. il faudra nous en dire plus :
• Les anciennes données déjà copiées sont elles écrasées ou la copie se fait à la suite ?
• Quel est l'onglet source ? Toujours le premier ? Comment savoir ?

Bref, on pourra t'aider si toi aussi tu fais un effort d'explications claires pour tout le monde...

 
Re : Combobox et UserForm

Bonjour,

Tout d'abord merci pour ta réponse. Je vais essayer d'être le plus clair possible. J'ai un fichier source (celui que j'ai joins), je voudrais que quand je clique sur le bouton un pop up s'ouvre (ce qui est déjà le cas) et que je puisse selectionner les feuilles actives (celle que j'aurais au préalable ouvert en .FIC). Jusque là j'y arrive, mais pour la suite je voudrais que lorsque j'appuye sur "OK", la feuille que j'aurais selectionner vienne se coller sur la feuil2 dans mon fichier source.

J'espère avoir été plus clair

merci pour votre aide.

Cdt
 
Re : Combobox et UserForm

Bonjour Tontonced, bonjour le forum,

J'ai l'impression que tu confonds Classeur (ou fichier excel) et Onglet (ou feuille d'un classeur). On ne peut pas copier une feuille dans un autre feuille. Mais on peut copier les données d'une feuille (ou d'un onglet) et les coller dans un autre onglet mais il faut précider la plage de départ et la cellule de destination.
Par exemple, copier la plage A1:G10 de l'onglet Feuil1 du classeur Source.xls et la coller dans la cellule A1 de l'onglet Feuil1 du classeur Destination.xls.
Sans toutes ces précisions tu auras peu ou pas de réponses...
 
Re : Combobox et UserForm

Robert,

merci pour ta réponse. Je vais retenter d'être plus clair. J'ai un fichier avec ma macro (qui pour le moment s'appelle "test bouton"). Je voudrais que quand je génère un fichier excel (grace à mon logiciel professionnel), ce fichier excel on va l'appeler "xxx" pour faire plus clair. Je voudrais donc pouvoir copier toutes les données de l'onglet feuil1 de mon fichier "xxx" vers l'onglet feuil2 de mon fichier "test bouton". Est ce que c'est plus clair?

merci pour ton aide

cdt
 
Re : Combobox et UserForm

Bonsoir Tontonced, bonsoir le forum,

En pièce jointe ton fichier modifié. J'ai remplacé la ComboBox par une ListBox multiselect... Elle affiche la liste des classeurs ouverts sauf celui de la macro et PERSO.xls (au cas où tu aurais un classeur de macro personnelles).
Sélectionne le ou les claseurs où tu veux que la macro agisse et clique sur le bouton OK...
Comme tu n'as pas précisé la plage, j'ai fait au plus simple avec UserdRange mais ça risque de ne pas bien fonctionner si la dernière ligne du tableau à copier (de l'onglet source) n'est pas remplie en colonne A...
C'est pénible d'avoir à te tirer les vers du nez pour obtenir les bonnes informations et te fournir un code fiable. Je ne reviendrais pas sur ton fil duquel je me désabonne car ça me gave...
Bonne continuation !
Le code :
Code:
Private Sub UserForm_Initialize()
Dim c As Workbook 'déclare la variable o (Classeur)
For Each c In Workbooks 'boucle sur tous les claeeurs ouverts
    'alimente la ListBox1 du nom des classeurs ouverts sauf le nom de ce classeur et "PERSO.XLS"
    If Not c.Name = ThisWorkbook.Name And Not c.Name = "PERSO.XLS" Then Me.ListBox1.AddItem c.Name
Next c 'prochain classeur ouvert de la boucle
End Sub


Private Sub OK_Click()
Dim cc As Workbook 'déclare la variable cc (Classeur Cible)
Dim oc As Object 'déclare la variable oc (Onglet Cible)
Dim x As Integer 'déclare la variable x (incrément)
Dim dest As Range 'déclare la variable dest (cellule de DESTination)
Dim cs As Workbook 'déclare la variable cs (Classeur Source)
Dim os As Object 'déclare la variable os (Onglet Source)

Set cc = ThisWorkbook 'définit le classeur cible
Set oc = cc.Sheets("Feuil2") 'définit l'onglet cible
With Me.ListBox1 'prend en compte la ListBox1
    For x = 0 To .ListCount - 1 'boucle sur tous les éléments de la ListBox1
        If .Selected(x) = True Then 'condition : si l'élément est sélectionné
            'définit la cellule de destination (A1 de l'onglet cible si A1 est vide, sinon la première cellule vide de la colonne A)
            Set dest = IIf(oc.Range("A1") = "", oc.Range("A1"), oc.Cells(Application.Rows.Count, 1).End(xlUp).Offset(1, 0))
            Set cs = Workbooks(.List(x)) 'définit le classeur source
            Set os = cs.Sheets("Feuil1") 'définit l'onglet source
            os.UsedRange.Copy dest 'copie la plage des cellules éditées de l'onglet source et la copie dans dest
        End If 'fin de la condition
    Next x 'prochain élément séolectionné de la boucle
End With 'fin de la prise en compte de la ListBox1
Unload Me 'vide et ferme l'Userform
oc.Activate 'sélectionne l'onglet cible
End Sub


Private Sub ANNULER_Click()
Unload Me 'vide et ferme l'Userform
End Sub
le fichier :
 

Pièces jointes

Re : Combobox et UserForm

Robert,

J'ai encore besoin d'une petite aide (toute petite 🙂). L'onglet de la feuille source ne s'appelera pas toujours feuil1, tout dépendra du document que je sortirais. Dans tous les cas il n'y aura toujours qu'un seul onglet. Comment faire pour qu'automatiquement il m'intégre directement l'onglet dans le fichier Destination toujours en feuil2

Merci

cdt
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
33
Affichages
1 K
Réponses
9
Affichages
385
Retour