sélection par l'utilisateur de plusieurs feuilles

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 !

j'Excel dans tout

XLDnaute Nouveau
Bonjour tout le monde,
Je suis nouveau dans la programmation en vba (ben oui, encore un vous direz vous mais ne désespérez pas, votre communauté augmente comme ça 😀 ) et j'ai un petit (enfin je pense 😕 ) problème à vous soumettre.

Voilà mon problème : j'ai un classeur excel où par une macro, j'arrive à importer des fichiers textes dans des nouvelles feuilles. ensuite, j'aimerai effectuer sur certaines de ces feuilles différentes opérations. Mon problème consiste à créer une macro,une inputbox , un userforme ou autre chose qui permette à l'utilisateur de choisir les feuilles sur lesquelles appliquer ces opérations, tout en sachant que le nombre de feuilles du classeur est variable et que leurs noms sont choisis par l'utilisateur.

En clair (si je ne l'était pas assez précédemment), je cherche à créer quelque chose qui liste toutes les feuilles du classeur, et qui puisse permettre à l'utilisateur d'en choisir autant qu'il veut (dans la limite du classeur disponible 😀 ) pour ensuite effectuer des opérations et des macros seulement sur celles sélectionnées.

Je ne sais pas ce qui peux être le plus facile pour réaliser ça alors je me permet de vous demander.

En espérant que vous pourrez m'aider.
Je vous remercie d'avance pour votre éclairage sur le problème.

j'Excel dans tout (enfin presque tout 😛 )
 
Re : sélection par l'utilisateur de plusieurs feuilles

Bonsoir,

Le plus simple reste encore de laisser l'utilisateur sélectionner les onglets manuellement (avec Shift ou Ctrl pour opérer la multisélection).
Ensuite tu fais lancer la (les) macro(s) à l'aide d'un bouton ou d'un raccourcis clavier.

Pour récupérer les onglets sélectionnés lors du traitement, on fait comme ça par exemple :
Code:
[SIZE=2][COLOR=NAVY]Sub[/COLOR] test()
[COLOR=NAVY]Dim[/COLOR] F [COLOR=NAVY]As[/COLOR] Worksheet
    [COLOR=NAVY]For Each[/COLOR] F [COLOR=NAVY]In[/COLOR] Windows(1).SelectedSheets
        MsgBox F.Name
    [COLOR=NAVY]Next[/COLOR] F
[COLOR=NAVY]End Sub[/COLOR][/SIZE]
Cordialement,
 
Re : sélection par l'utilisateur de plusieurs feuilles

bonsoir myDearFriend!

je vois ce que tu veux dire et ça ne va pas puisque le code que je recherche sera intégré dans une macro. dans cette macro, au début je sélectionne déja une autre feuille donc la sélection de l'utilisateur ne sera plus valable. il me faut quelque chose que je puisse donc intégrer à un macro.

le processus de la macro à laquelle je vais rajouter ceci est :
-création d'une feuille à la fin du classeur que l'utilisateur nomme comme il le souhaite.
-sélection des feuilles à utiliser par l'utilisateur <-ce que je recherche
-application des analyses sur les feuilles sélectionnées

Cependant je pense que t'a méthode pourrais rester applicable avec une inputbox où je demande à l'utilisateur de cliquer sur les onglets pour les sélectionner. Seulement je ne sais pas encore le faire, mais je regarderai sur internet pour essayer de pondre un code utilisable.

Je verrai ça lundi car ce week end je ne suis pas la.

En tout cas merci pour ta réponse ça m'aide à avancer.
a+
 
Re : sélection par l'utilisateur de plusieurs feuilles

Re,
Je ne voudrais pas insister et surtout pas empêcher quiconque de te proposer un userform comme tu le souhaitais mais bon... je ne comprends pas bien ton soucis.
Tu peux aisément stocker le nom des feuilles sélectionnées, puis créer ou sélectionner ton onglet, puis enfin, faire le traitement sur les feuilles dont les noms sont stockés.

Un truc de ce genre :
Code:
[SIZE=2][COLOR=NAVY]Sub[/COLOR] Traitement()
[COLOR=NAVY]Dim[/COLOR] F [COLOR=NAVY]As[/COLOR] Worksheet
[COLOR=NAVY]Dim[/COLOR] SelF [COLOR=NAVY]As New[/COLOR] Collection
[COLOR=NAVY]Dim[/COLOR] N [COLOR=NAVY]As Byte[/COLOR]
    [COLOR=GREEN]'Tu collectes les noms de feuille sélectionnée[/COLOR]
    [COLOR=NAVY]For Each[/COLOR] F [COLOR=NAVY]In[/COLOR] Windows(1).SelectedSheets
        SelF.Add F.Name
    [COLOR=NAVY]Next[/COLOR] F
    [COLOR=GREEN]'Tu sélectionnes l'onglet que tu veux (ou crées un onglet, etc...)[/COLOR]
    Sheets("Feuil1").[COLOR=NAVY]Select[/COLOR]
    [COLOR=GREEN]'Tu opères le traitement souhaité des onglets mémorisés[/COLOR]
    [COLOR=NAVY]For[/COLOR] N = 1 [COLOR=NAVY]To[/COLOR] SelF.Count
        [COLOR=NAVY]With[/COLOR] Sheets(SelF(N))
            [COLOR=GREEN]'...traitement[/COLOR]
        [COLOR=NAVY]End With
    Next[/COLOR] N
[COLOR=NAVY]End Sub[/COLOR][/SIZE]
Par ailleurs, je te rappelle qu'en VBA, la plupart du temps, il est inutile de sélectionner une feuille pour pouvoir agir dessus...

Cordialement,
 
Re : sélection par l'utilisateur de plusieurs feuilles

Bonsoir,
peut-être une listbox emplie de tous les noms de tes onglets, une sélection, simple ou multiple (via la touche Ctrl), et ensuite le traitement?

Private Sub UserForm_Initialize()
For Each c In ActiveWorkbook.Sheets
ListBox1.AddItem c.Name
Next
End Sub

Private Sub CommandButton1_Click()
With ListBox1
For i = 0 To .ListCount - 1
If .Selected(i) = True Then
'tu mets ta procédure ici
'par exemple
Sheets(.List(i)).Activate
[a1] = "Onglet Sélectionné"
End If
Next i
End With
End Sub

regarde le fichier joint, et reviens si tu as un souci
Bon courage
 

Pièces jointes

Re : sélection par l'utilisateur de plusieurs feuilles

Bonjour myDearFriend!, bhbh,

Tu peux aisément stocker le nom des feuilles sélectionnées, puis créer ou sélectionner ton onglet, puis enfin, faire le traitement sur les feuilles dont les noms sont stockés.
->c'est vrai je n'y avais pas pensé, j'essayais de tout faire au moment où on aurait à utiliser la fonction

Par ailleurs, je te rappelle qu'en VBA, la plupart du temps, il est inutile de sélectionner une feuille pour pouvoir agir dessus...
->peut-être pas la sélectionner mais au moins définir sur laquelle ou lesquelles tu agis :
sheets("feuil1").... (par exemple)

En tout cas, myDearFriend! je te remercie de ta solution mais je vais finalement prendre celle de bhbh, elle est plus conviviale à utiliser. C'est, en plus, la base de ce que je recherchais.
Il ne me reste plus qu'à rajouter deux ou trois petits truc dans ton code bhbh et ce sera parfait (le bouton annuler par exemple^^).
Ayant maintenant la base du code, je vais arriver à me débrouiller tout seul pour le terminer 🙂

Je vous remercie tous les deux de m'avoir aidé à faire ce que je voulais.
J'espère que j'aurais d'autres problèmes pour revenir vous voir 😉 (ou que d'autre en auront pour essayer d'aider)
En attendant bonne continuation.
bye

J'Excel dans tout (et bientôt dans le vba 😛 )
 
Re : sélection par l'utilisateur de plusieurs feuilles

rebonjour tout le monde,

c'est bon, j'ai réussi à faire ce que je voulais avec ta solution bhbh 🙂
je met ici le fichier contenant la base du userform amélioré pour les prochains dans le même cas 😀

je vous remercie encore de m'avoir aider.
à bientôt.

j'Excel dans tout 😉
 

Pièces jointes

- 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

Discussions similaires

Retour