Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2019 Liste déroulante qui change la macro d'un bouton

Yazeubi

XLDnaute Junior
Bonjour à tous,

Je souhaite que l'on m'aide sur une mission que je n'ai jamais croisé ailleurs. Je souhaite crée une liste déroulante relié à un bouton.
Lorsque je choisis une valeur dans la liste déroulante le bouton possèdent la macro dédié à la valeurs. Si je change de valeurs dans la liste déroulante, le bouton possèdent la macro dédié à la valeurs choisis.
La liste déroulante se situera en A1, le bouton en B3, les valeurs de la liste déroulante sont en bleu dans les cellules C3:C43.
Les macro souhaité pour chaque valeurs est que lorsque la valeur X est sélectionné dans la liste déroulante la ligne situé en face est copié puis coller de D4585.
Exemples réel pour être clair : Je choisis la première valeur de la liste déroulante qui est "Donnée 1" positionné dans la cellule "C3" donc la macro sera de copier toutes les valeurs situés dans la même ligne soit D3:BG3 et de les coller en D45:BG45.

Merci de votre précieuse aide
 

Pièces jointes

  • Liste déroulante de macro.xlsm
    37.1 KB · Affichages: 9

Yazeubi

XLDnaute Junior
Bonjour @Phil69970,

Je vous remercie pour votre document que je garde sous le coude. Cependant je souhaite utilisé un bouton et des macros car je souhaite coller les cellules préalablement copier, dans un autre Excel. Comme je possèdes le code à rentrer dans les macros j'ai demandé a titre d'exemple de les coller cellules en D4585.

Pensez-vous pouvoir m'aider sur ma requête ?

Merci d'avance

Ps: J'ai liké votre commentaire, et j'ai commencé à vous écrire ce message.
 
Dernière édition:

Phil69970

XLDnaute Barbatruc
@Yazeubi

Une nouvelle version qui fait exactement ce que faisait mon 1er fichier mais par macro et en 3 fois plus compliqué.
Mais pourquoi faire simple quand on peut faire compliqué

*Merci de ton retour

@Phil69970
 

Pièces jointes

  • Liste déroulante et formule V2.xlsm
    41.3 KB · Affichages: 5

Yazeubi

XLDnaute Junior
Merci @Phil69970,

Le document que tu m'as transmis répond parfaitement à ma demande.
De mon côté j'ai modifié les données pour le faire correspondre à ce que je comptais faire soit coller les valeurs AL31:AL81 dans un autre Excel. Cela ne marche pas.. la honte, peux-tu me dire ce qui ne va pas ?
En cas si je n'ai pas de réponse car la discutions est finis, je recommencerais une discutions demain.

Merci de ton aide

Code:
[CODE=vb]Sub MaCopie()

[AL31].FormulaLocal = "=SIERREUR(RECHERCHEV($A$1;$C$3:$BG$43;COLONNE()-2;0);"""")"



ActiveWorkbook.FollowHyperlink "C:\Users\Tom\OneDrive\Documents\Qlio\Stage\Gamme de contrôle\Test d'automatisation VBA\Capabilité automatisé Maison 3.xlsm"

Range("AL31").AutoFill Range("AL31:AL80"), Type:=xlFillDefault

[AL31].Value = [AL31:AL80].Value

[A1] = ""  'En option ==> Vide la cellule A1

End Sub



Sub CommandButton1_Click()

MaCopie

End Sub
[/CODE]
 

Pièces jointes

  • Liste déroulante et formule V2.xlsm
    41.8 KB · Affichages: 3

Phil69970

XLDnaute Barbatruc
@Yazeubi

Déjà je vois au moins 2 problèmes :

1) Si tu modifies les valeurs modifie juste !!!
valeurs AL31:AL81
et ici


2) Si tu veux transposer transpose juste !!!
[AL31].Value = [AL31:AL80].Value
et moi j'ai écrit
[D45:BG45].Value = [D45:BG45].Value
donc j'ecrirais :
[AL31:AL80].Value = [AL31:AL80].Value

Moralité quand tu fournis un fichier il faut qu'il soit représentatif de l'original donc même lignes, même colonnes et même nom d'onglet la transposition n'en sera que plus facile pour toi !!!

De plus quand tu dis ça ne marche pas cela n'aide pas beaucoup !
Cela ne marche pas.

Si ce n'est pas cela en l'état je ne vois pas avec le peu d'info que tu as donné.

@Phil69970
 

Yazeubi

XLDnaute Junior
J'ai modifié mes erreurs, j'ai mis un dossier excel très simple pour essayer de reproduire ma demande.
 

Pièces jointes

  • Liste déroulante et formule V2 (2).xlsm
    38.2 KB · Affichages: 5
  • FORUM PHIL69970.xlsm
    10.3 KB · Affichages: 4

AtTheOne

XLDnaute Accro
Supporter XLD
Bonjour à toutes et à tous, bonjour @Yazeubi et @Phil69970
J'arrive un peu tard mais voilà une solution.
Je suis assez réticent à mettre des adresses en dur dans le VBA, je préfère utiliser des noms définis modifiables hors VBA . On n'a alors aucun problème si l'on insère on supprime des cellules qui influeraient sur les adresses.
Le code est plus long, certes, mais plus facile à maintenir.

Donc dans le classeur "Liste déroulante qui change la macro d'un bouton.xlsm", les noms
NomPlageCommentaire
ListeChoix=Feuil1!$C$3:$C$43La plage contenant toutes les valeurs sélectionnables
Choix=Feuil1!$A$1La cellule contenant la valeur sélectionnée
Données=Feuil1!$D$3:$BG$43La zone contenant les données (hormis liste de choix)

Dans le classeur "Ma_Cible.xlsm" le nom
NomPlageCommentaire
Cible=Feuil1!$AL$31:$AL$80Plage cible du classeur nommé "Ma_Cible"

Ensuite la macro dans le classeur "Liste déroulante qui change la macro d'un bouton.xlsm"
Enrichi (BBcode):
Sub Copier_Choix()

     Dim WshS As Worksheet, WshC As Worksheet, Cible As Range, Choix$, ListeChoix, ListeDonnées, idx As Long
  
     Set WshS = Feuil1                                      'la feuille Source (ici Feuil1)
  
     On Error Resume Next
     Set WshC = Workbooks("Ma_Cible.xlsm").Worksheets(1)    'la feuille cible  (ici la 1ère feuille du classeur "Ma_cible")
     On Error GoTo 0
     If WshC Is Nothing Then MsgBox "Impossible d'accéder à la feuille cible !": Exit Sub
  
     With WshS
          Choix = .[Choix]              'la cellule qui contient le choix (ici A1)
          ListeChoix = .[ListeChoix]    'la liste des choix possibles (ici C3:C43)
          ListeDonnées = .[Données]     'la plage de données (ici D3:BG43)
     End With
     Set Cible = WshC.[Cible]           'la plage cible
     On Error Resume Next
     idx = WorksheetFunction.Match(Choix, ListeChoix, 0)
     On Error GoTo 0
     If idx = 0 Then MsgBox "Sélectionnez d'abord une donnée !": Exit Sub
  
  
     With WorksheetFunction
          Cible.Value = .Transpose(.Index(ListeDonnées, idx, 0))
     End With
     WshS.[Choix].ClearContents
  
End Sub

Amicalement
Alain
Modif : correction coquille dans un commentaire
 

Pièces jointes

  • Liste déroulante qui change la macro d'un bouton.xlsm
    39.8 KB · Affichages: 2
  • Ma_Cible.xlsm
    11.3 KB · Affichages: 1
Dernière édition:

Yazeubi

XLDnaute Junior
Bonjour,

@AtTheOne je te remercie pour ton document qui correspond précisément à ce que j'ai demandé ainsi qu'à ton soucis du commentaire qui m'a permis de bien comprendre, au top !

Merci @Phil69970, ton document correspond parfaitement à mes attentes, je te remercie d'avoir pris le temps de re faire un document aussi clair.

Les documents que vous m'avez fournis sont super.

Cordialement
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…