Macro dont une variable serait un choix effectué dans une liste

Bonjour,

Pour l'instant, je lance une procédure avec message box me demandant si je veux exécuter dans l'onglet ou je me trouve (onglet actif), désigné par une variable dans mon code par "Set ws_feuil2 = ActiveSheet"

j'aimerai plutôt que de devoir me trouver dans l'onglet concerné lors du lancement de la procédure, avoir une liste me permettant de sélectionner l'onglet de mon choix (les onglets du classeur dans lequel je travaille) et renvoyer ce choix vers la variable ws_Feuil2

J'ai parcouru plusieurs sujet comparables, mais je ne suis pas arriver à en extraire mes besoins, faute de connaissances approfondie du code sans aucuns doutes

Sub CdeRECURENCE4()
'Commande (Articles en souffrance ayant une récurrence de 4)

Dim msg, Style, Title, Help, Ctxt, Reponse, MyString
msg = "Voulez-vous insérer la Cde dans l'onglet où vous vous trouvez ?"    ' Definition du message.
Style = vbOKCancel    ' Definition bouton.
Title = "CONFIRMATION D'INSERTION DE COMMANDE"    ' Definition du titre.
Help = "DEMO.HLP"    ' Define Help file.
Ctxt = 2000    ' Define topic context.
Reponse = MsgBox(msg, Style, Title, Help, Ctxt)

   If Reponse = vbCancel Then
      Exit Sub
   Else

Dim wk_fichier As Workbook
Dim ws_feuil1 As Worksheet
Dim ws_feuil2 As Worksheet
Dim lstrw_feuil1 As Long, lstrw_feuil2 As Long
Dim ligne_coller As Long
Dim i As Integer

'définir les variables fichiers et onglets
Set wk_fichier = ActiveWorkbook
Set ws_feuil1 = wk_fichier.Worksheets("BD Articles") '1 entre parenthèse indique la feuille 1 qui est la BD articles
Set ws_feuil2 = ActiveSheet  'onglet période bimensuelle de la commande à effectuer

'identifier dernière ligne colonne A feuil1
lstrw_feuil1 = ws_feuil1.Cells(Rows.Count, 1).End(xlUp).Row

'commencer la boucle sur les lignes
For i = 2 To lstrw_feuil1

    'conditions de récurrence égale à 4, différent de rien et de besoin supérieur à zéro 
            If ws_feuil1.Cells(i, 5) = 4 And ws_feuil1.Cells(i, 12) <> "" And ws_feuil1.Cells(i, 12) > 0 Then
   
             'identifier dernière ligne colonne A feuil2
              lstrw_feuil2 = ws_feuil2.Cells(Rows.Count, 2).End(xlUp).Row
              ligne_coller = lstrw_feuil2 + 1

              'copier coller les éléments nécessaires
              ws_feuil2.Cells(ligne_coller, 2) = ws_feuil1.Cells(i, 1)
              ws_feuil2.Cells(ligne_coller, 3) = ws_feuil1.Cells(i, 2)
              ws_feuil2.Cells(ligne_coller, 7) = ws_feuil1.Cells(i, 12)
              ws_feuil2.Cells(ligne_coller, 10) = "I"
            End If

Next

    End If

End Sub

Hello,

C'est dommage, tu peux faire + simple avec un peu de rigueur. Ton code est bien fait profites en !

Il suffit de noter dans ton inputbox le nom de la feuille, puis ensuite tu fais un sheets(Reponse).select et t'as rien à changer

A méditer

Bonjour,

pas tout à fait le fonctionnement demandé mais des fois que...
Application.CommandBars("Workbook tabs").ShowPopup
t'affiche la liste des onglets. Un clic active la feuille cliquée.
eric

La réponse de Eriiic, ci-dessous est une solution potentielle,

En effet en plaçant le code donné avant ma procédure, cela me permet de sélectionner l'onglet désiré et ensuite mon msgbox demande confirmation...

"Bonjour,

pas tout à fait le fonctionnement demandé mais des fois que...
Application.CommandBars("Workbook tabs").ShowPopup
t'affiche la liste des onglets. Un clic active la feuille cliquée.
eric"

Merci pour la réponse et l'info

Merci aussi à RAG02700 pour sa réponse, mais mon code devant fonctionner pour plusieurs onglets, je ne peux mettre un nom de feuille par défaut, jaurai justement aimé une proposition de choix de feuilles dans laquelle j'aimerai insérer ma commande.

entre autre, j'ai des feuilles pour chaque période et je lance la même procédure mais à différents moments de l'année donc dans des feuilles différentes à chaque fois.

le système de liste aurait permis d'être certain d'appliquer le code dans le bon onglet, mais la solution d'Eriiic fonctionne aussi parfaitement.

je laisse un peu le post ouvert pour d'autres propositions qui me feraient grandir en VBA encore quelques temps.

Un grand merci à la communauté de ce forum pour le partage...

Rechercher des sujets similaires à "macro variable serait choix effectue liste"