[non résolu^^]Récupérer valeur d'une liste déroulante (vba excel)
Tags :
Dernière réponse : dans Programmation
Bonjour,
Voilà quelques jours que je cherche la méthode pour récupérer la valeur d'une liste déroulante (objet de formulaire), insérée directement depuis une feuille de calcul, et non un userform.
Je cherche également si il est possible de mettre les données dans cette liste sans passer par une sélection de cellules.
Merci d'avance
(ps : kangol t'énerve pas
)
Voilà quelques jours que je cherche la méthode pour récupérer la valeur d'une liste déroulante (objet de formulaire), insérée directement depuis une feuille de calcul, et non un userform.
Je cherche également si il est possible de mettre les données dans cette liste sans passer par une sélection de cellules.
Merci d'avance
(ps : kangol t'énerve pas
) Autres pages sur : resolu recuperer valeur liste deroulante vba excel
Lassé par la pub ? Créez un compte
- | Alerter
- | Alerter
- | Alerter
Contenus similaires
- Excel macro selection ligne - Forum
- Macro selection ligne excel - Forum
- Macro excel selection ligne - Forum
- Excel selection variable - Forum
- | Alerter
- | Alerter
Merci pour la réponse, mais ...
J'ai mis ceci :
Et j'ai une erreur :
"erreur d'exécution 1004
Imopssible de lire la propriété OLEObjects de la classe Worksheet
ps : j'utilise Excel 2003
J'ai mis ceci :
test_var = Worksbooks("Valeurs en cours 0002.xls").Worksheets("Macros").OLEObjects("variation_stock").Object.value
Et j'ai une erreur :
"erreur d'exécution 1004
Imopssible de lire la propriété OLEObjects de la classe Worksheet
ps : j'utilise Excel 2003
- | Alerter
- | Alerter
- | Alerter
- | Alerter
- | Alerter
- | Alerter
- | Alerter
- | Alerter
Citation :
Ben en posant une combobox depuis la barre d'outils "Boîte à outils Contrôles" ![[:spamafote] [:spamafote]](http://m.bestofmedia.com/sfp/design/usr/fr/smilies/3e/46/spamafote.gif)
caramou a dit :
J'ai rien qui apparait
Han, tu n'as pas utilisé la barre d'outils "Boîte à outils Contrôles" mais la barre "Formulaire" !
Ton composant ne s'appelle pas "Combobox1" mais "Drop Down 1" !
Ceci pour voir ton composant :
Dim s As Shape With Workbooks("Classeur1").Worksheets("Feuil1") Debug.Print "Nombre d'objets sur la feuille : " & Shapes.Count For Each s In .Shapes Debug.Print "- "; s.Name Next End With
Donc la réponse a ton problème :
Tips: Utilise les objets OLE de la barre d'outils "Boîte à outils Contrôles".
- | Alerter
- | Alerter
- | Alerter
Bonjour,
J'ai exactement le même problème que dtom (1 an après sur excel 2007).
Pareil, j'ai dessiné une combobox avec controles, je l'ai remplie avec une plage de mes feuilles.
Mais j'ai besoin de retrouver la valeur choisie dans la combo pour faire un tri sur une autre page et ainsi afficher un beau graphe.
Voici le code qui me permet de faire le tri:
Sheets("ASD DPQR Tier 1").Select
Rows("1:1").Select
Selection.AutoFilter
ActiveSheet.Range("$A$1:$DG$176").AutoFilter Field:=10
Sheets("Graph Highlight").Select
Sheets("ASD DPQR Tier 1").Select
Range("J1").Select
ActiveSheet.Range("$A$1:$DG$176").AutoFilter Field:=10, Criteria1:= _
"LO1_R1X3_12"
'Ici entre guillemets, une des valeurs que j'aimerais récupérer de ma combo.
'J'ai déjà essayé avec Combobox1.Value, mais comme je ne connais pas le nom de la combo ça ne sert à rien.
'Pour le code ci dessus, pour retrouver le nom, je n'arrive pas à le faire marcher.
'Drop Down 1 ne marche pas non plus.
Sheets("Graph Highlight").Select
Merci d'avance pour vos réponses,
Charly
J'ai exactement le même problème que dtom (1 an après sur excel 2007).
Pareil, j'ai dessiné une combobox avec controles, je l'ai remplie avec une plage de mes feuilles.
Mais j'ai besoin de retrouver la valeur choisie dans la combo pour faire un tri sur une autre page et ainsi afficher un beau graphe.
Voici le code qui me permet de faire le tri:
Sheets("ASD DPQR Tier 1").Select
Rows("1:1").Select
Selection.AutoFilter
ActiveSheet.Range("$A$1:$DG$176").AutoFilter Field:=10
Sheets("Graph Highlight").Select
Sheets("ASD DPQR Tier 1").Select
Range("J1").Select
ActiveSheet.Range("$A$1:$DG$176").AutoFilter Field:=10, Criteria1:= _
"LO1_R1X3_12"
'Ici entre guillemets, une des valeurs que j'aimerais récupérer de ma combo.
'J'ai déjà essayé avec Combobox1.Value, mais comme je ne connais pas le nom de la combo ça ne sert à rien.
'Pour le code ci dessus, pour retrouver le nom, je n'arrive pas à le faire marcher.
'Drop Down 1 ne marche pas non plus.
Sheets("Graph Highlight").Select
Merci d'avance pour vos réponses,
Charly
- | Alerter
- | Alerter
Bonjour,
J'ai exactement le même problème que dtom (1 an après sur excel 2007).
Pareil, j'ai dessiné une combobox avec controles, je l'ai remplie avec une plage de mes feuilles.
Mais j'ai besoin de retrouver la valeur choisie dans la combo pour faire un tri sur une autre page et ainsi afficher un beau graphe.
Voici le code qui me permet de faire le tri:
'Ici entre guillemets ("LO1_R1X3_12"), une des valeurs que j'aimerais récupérer de ma combo.
'J'ai déjà essayé avec Combobox1.Value, mais comme je ne connais pas le nom de la combo ça ne sert à rien.
'Pour le code ci dessus, pour retrouver le nom, je n'arrive pas à le faire marcher.
'Drop Down 1 ne marche pas non plus.
Merci d'avance pour vos réponses,
Charly
PS: C'est bon comme ça?
oui c'est sur, j'ai attendu une réponse toute l'après midi, au moment où j'allais éteindre l'ordi, je reçoit le message, tout excité j'ouvre et non pas de réponse :-(
J'ai exactement le même problème que dtom (1 an après sur excel 2007).
Pareil, j'ai dessiné une combobox avec controles, je l'ai remplie avec une plage de mes feuilles.
Mais j'ai besoin de retrouver la valeur choisie dans la combo pour faire un tri sur une autre page et ainsi afficher un beau graphe.
Voici le code qui me permet de faire le tri:
Sheets("ASD DPQR Tier 1" ).Select
Rows("1:1" ).Select
Selection.AutoFilter
ActiveSheet.Range("$A$1:$DG$176" ).AutoFilter Field:=10
Sheets("Graph Highlight" ).Select
Sheets("ASD DPQR Tier 1" ).Select
Range("J1" ).Select
ActiveSheet.Range("$A$1:$DG$176" ).AutoFilter Field:=10, Criteria1:= _
"LO1_R1X3_12"
Sheets("Graph Highlight" ).Select
'Ici entre guillemets ("LO1_R1X3_12"), une des valeurs que j'aimerais récupérer de ma combo.
'J'ai déjà essayé avec Combobox1.Value, mais comme je ne connais pas le nom de la combo ça ne sert à rien.
'Pour le code ci dessus, pour retrouver le nom, je n'arrive pas à le faire marcher.
'Drop Down 1 ne marche pas non plus.
Merci d'avance pour vos réponses,
Charly
PS: C'est bon comme ça?
oui c'est sur, j'ai attendu une réponse toute l'après midi, au moment où j'allais éteindre l'ordi, je reçoit le message, tout excité j'ouvre et non pas de réponse :-(
- | Alerter
- | Alerter
Citation :
mais comme je ne connais pas le nom de la combo ça ne sert à rien.C'est bien le problème, gros malin !
Voici de quoi le trouver, le nom de ton composant :
Option Explicit Private Function ShapeType(n As Integer) As String Select Case n Case msoAutoShape: ShapeType = "msoAutoShape" Case msoCallout: ShapeType = "msoCallout" Case msoCanvas: ShapeType = "msoCanvas" Case msoChart: ShapeType = "msoChart" Case msoComment: ShapeType = "msoComment" Case msoDiagram: ShapeType = "msoDiagram" Case msoEmbeddedOLEObject: ShapeType = "msoEmbeddedOLEObject" Case msoFormControl: ShapeType = "msoFormControl" Case msoFreeform: ShapeType = "msoFreeform" Case msoGroup: ShapeType = "msoGroup" Case msoLine: ShapeType = "msoLine" Case msoLinkedOLEObject: ShapeType = "msoLinkedOLEObject" Case msoLinkedPicture: ShapeType = "msoLinkedPicture" Case msoOLEControlObject: ShapeType = "msoOLEControlObject" Case msoPicture: ShapeType = "msoPicture" Case msoScriptAnchor: ShapeType = "msoScriptAnchor" Case msoShapeTypeMixed: ShapeType = "msoShapeTypeMixed" Case msoTable: ShapeType = "msoTable" Case msoTextBox: ShapeType = "msoTextBox" Case msoTextEffect: ShapeType = "msoTextEffect" End Select End Function Sub ListShapes() Dim wb As Workbook Dim sh As Object Dim tx As String Dim shp As Shape Dim sep As String sep = "" tx = "" For Each wb In Workbooks tx = tx & sep tx = tx & "Classeur : <" & wb.CodeName & "> " tx = tx & """" & wb.Name & """ " tx = tx & "[" & TypeName(wb) & "]" & vbCrLf tx = tx & " Feuilles de calcul : " & wb.Worksheets.Count & vbCrLf tx = tx & " Feuilles graphiques : " & wb.Charts.Count & vbCrLf For Each sh In wb.Sheets tx = tx & vbCrLf & " Feuille : <" & sh.CodeName & "> " tx = tx & """" & sh.Name & """ " tx = tx & "[" & TypeName(sh) & "]" & vbCrLf tx = tx & " Objets : " & sh.Shapes.Count & vbCrLf For Each shp In sh.Shapes tx = tx & " Objet : <" & shp.Name & "> " On Error Resume Next tx = tx & """" & shp.OLEFormat.Object.Caption & """" tx = tx & """" & shp.OLEFormat.Object.Object.Caption & """" tx = tx & """" & shp.OLEFormat.Object.Object.Text & """" tx = tx & " [" & ShapeType(shp.OLEFormat.Object.ShapeRange.Type) & "]" On Error GoTo 0 tx = tx & vbCrLf Next Next sep = "--------------------------------------------------------" & vbCrLf Next MsgBox tx End Sub
- | Alerter
Bonjour zeb,
Merci beaucoup pour ta réponse, mais je n'y arrive toujours pas.
Les formes créées sont elles toujours de la forme:
Enfin bref, j'ai testé ta macro, il me dit que j'ai 3 pages, me donne les caractéristiques de ce qui se trouve sur toutes les feuilles sauf celles dont j'ai besoin, est ce que cela veut dire qu'il n'y a rien sur la feuille ou il y a la combobox?
Comme cela ne marchait pas, j'ai essayé avec tous les Shapetype de la liste, en mettant le ShapeType.Value à la place de ce que j'avais entre guillemets, faut il mettre les guillemets? car je les ai enlevés vu que je n'insérait pas de valeur directement.
Merci encore pour tes réponses,
Au fait, comment as tu appris à faire celà? (ce que tu m'as pondu était vraiment ... la classe ;-))
Charly
Merci beaucoup pour ta réponse, mais je n'y arrive toujours pas.
Les formes créées sont elles toujours de la forme:
Case msoAutoShape: ShapeType = "msoAutoShape"
Case msoCallout: ShapeType = "msoCallout"
Case msoCanvas: ShapeType = "msoCanvas"
Case msoChart: ShapeType = "msoChart"
Case msoComment: ShapeType = "msoComment"
Case msoDiagram: ShapeType = "msoDiagram"
Case msoEmbeddedOLEObject: ShapeType = "msoEmbeddedOLEObject"
Case msoFormControl: ShapeType = "msoFormControl"
Case msoFreeform: ShapeType = "msoFreeform"
Case msoGroup: ShapeType = "msoGroup"
Case msoLine: ShapeType = "msoLine"
Case msoLinkedOLEObject: ShapeType = "msoLinkedOLEObject"
Case msoLinkedPicture: ShapeType = "msoLinkedPicture"
Case msoOLEControlObject: ShapeType = "msoOLEControlObject"
Case msoPicture: ShapeType = "msoPicture"
Case msoScriptAnchor: ShapeType = "msoScriptAnchor"
Case msoShapeTypeMixed: ShapeType = "msoShapeTypeMixed"
Case msoTable: ShapeType = "msoTable"
Case msoTextBox: ShapeType = "msoTextBox"
Case msoTextEffect: ShapeType = "msoTextEffect"
Enfin bref, j'ai testé ta macro, il me dit que j'ai 3 pages, me donne les caractéristiques de ce qui se trouve sur toutes les feuilles sauf celles dont j'ai besoin, est ce que cela veut dire qu'il n'y a rien sur la feuille ou il y a la combobox?
Comme cela ne marchait pas, j'ai essayé avec tous les Shapetype de la liste, en mettant le ShapeType.Value à la place de ce que j'avais entre guillemets, faut il mettre les guillemets? car je les ai enlevés vu que je n'insérait pas de valeur directement.
Merci encore pour tes réponses,
Au fait, comment as tu appris à faire celà? (ce que tu m'as pondu était vraiment ... la classe ;-))
Charly
- | Alerter
Citation :
Les formes créées sont elles toujours de la forme:...
Citation :
Enfin bref, j'ai testé ta macro, il me dit que j'ai 3 pages, me donne les caractéristiques de ce qui se trouve sur toutes les feuilles sauf celles dont j'ai besoin, est ce que cela veut dire qu'il n'y a rien sur la feuille ou il y a la combobox?
- Quelle type de feuilles utilises-tu ???S'agirait-il d'une UserForm ?
Citation :
Comme cela ne marchait pas, j'ai essayé avec tous les Shapetype de la liste, en mettant le ShapeType.Value à la place de ce que j'avais entre guillemets, faut il mettre les guillemets? car je les ai enlevés vu que je n'insérait pas de valeur directement.
Que cherches-tu à faire ? - | Alerter
Merci de t'intéresser à mon cas, c'est cool la patience.
Donc je récapitule. (Je suis sous excel 2007)
-Feuille 1 j'ai des données (beaucoup de lignes que je dois filtrer pour pouvoir afficher un graphe)
-Feuille 2 j'ai une combobox (mise en utilisant l'onglet développeur, dans controles, insérer, controle de formulaire, zone de liste déroulante) que j'ai remplie en utilisant une liste de la feuille 1. (mes critères). Cette combobox est associée à la macro que j'ai déjà écrite:
cette macro me permet de trier ma feuille 1 selon le critère "LO1_R1X4_02" (critère hardcodé donc), ce que je voudrais ça serait trier par rapport au critère choisi dans ma combobox, ça serait donc ComboBox.Value qu'il faudrait mettre à la place de "LO1_R1X4_02". Enfin avec le nom de la combobox.
Ce que j'ai fais après ton dernier post, c'est essayer ta macro, celle ci me permettait de voir qu'il n'y avait 3 feuilles dans le fichier cool, mais je n'avais les propriétés que de deux, les deux qui ne m'intéressaient pas, il ne parlait pas de la feuille où il y a la combobox.
Ensuite, comme tu me l'as confirmé, tu m'as donné la liste exhaustive des shapes alors j'ai essayé tous els noms dans ma macro en remplaçant le:
"LO1_R1X4_02"
par Shape.Value j'ai essayé avec toute la liste, mais ça n'a toujours pas marché.
Je ne sais plus quoi faire maintenant.
Merci pour tes réponses,
Charly
Donc je récapitule. (Je suis sous excel 2007)
-Feuille 1 j'ai des données (beaucoup de lignes que je dois filtrer pour pouvoir afficher un graphe)
-Feuille 2 j'ai une combobox (mise en utilisant l'onglet développeur, dans controles, insérer, controle de formulaire, zone de liste déroulante) que j'ai remplie en utilisant une liste de la feuille 1. (mes critères). Cette combobox est associée à la macro que j'ai déjà écrite:
Sub HighlightSelect()
'
' HighlightSelect Macro
'
Sheets("ASD DPQR Tier 1").Select
Rows("1:1").Select
Selection.AutoFilter
ActiveSheet.Range("$A$1:$DG$176").AutoFilter Field:=10
Sheets("Graph Highlight").Select
Sheets("ASD DPQR Tier 1").Select
Range("J1").Select
ActiveSheet.Range("$A$1:$DG$176").AutoFilter Field:=10, Criteria1:= _
"LO1_R1X4_02"
Sheets("Graph Highlight").Select
cette macro me permet de trier ma feuille 1 selon le critère "LO1_R1X4_02" (critère hardcodé donc), ce que je voudrais ça serait trier par rapport au critère choisi dans ma combobox, ça serait donc ComboBox.Value qu'il faudrait mettre à la place de "LO1_R1X4_02". Enfin avec le nom de la combobox.
Ce que j'ai fais après ton dernier post, c'est essayer ta macro, celle ci me permettait de voir qu'il n'y avait 3 feuilles dans le fichier cool, mais je n'avais les propriétés que de deux, les deux qui ne m'intéressaient pas, il ne parlait pas de la feuille où il y a la combobox.
Ensuite, comme tu me l'as confirmé, tu m'as donné la liste exhaustive des shapes alors j'ai essayé tous els noms dans ma macro en remplaçant le:
"LO1_R1X4_02"
par Shape.Value j'ai essayé avec toute la liste, mais ça n'a toujours pas marché.
Je ne sais plus quoi faire maintenant.
Merci pour tes réponses,
Charly
- | Alerter
Argh! Je ne dispose actuellement que de la version 2003 d'Excel.
Je tâche de mettre la main sur une version plus moderne et je t'en reparle.
Je ne comprends pas pourquoi
Essaie de refaire la manip juste pour la feuille-où-il-y-a-la-combobox :
En attendant.....
Ton code est vraiment horrible :
Je hais les Select/Selections/Truc.Activate/ActiveMachin !!! Beurk
Primo, ça consomme des ressources énormes, deuxio, ça ne sert à rien d'autre.
Justifie-moi les lignes 5, 6 et 7 !
Regarde ça :
Et je me demande pourquoi faire deux fois un filtre, une fois sur la ligne 1, une fois sur la zone A1:DG176.
Ceci devrait suffire :
Je tâche de mettre la main sur une version plus moderne et je t'en reparle.
Citation :
celle ci me permettait de voir qu'il n'y avait 3 feuilles dans le fichier cool, mais je n'avais les propriétés que de deux, les deux qui ne m'intéressaient pas, il ne parlait pas de la feuille où il y a la combobox. Je ne comprends pas pourquoi
Essaie de refaire la manip juste pour la feuille-où-il-y-a-la-combobox :
Dim sh As Shape Dim tx As String tx = "Objets: " & Worksheets("feuille-où-il-y-a-la-combobox").Shapes.Count & vbCrLf For Each shp In Worksheets("feuille-où-il-y-a-la-combobox").Shapes tx = tx & " Objet : <" & shp.Name & "> " tx = tx & "| " On Error Resume Next tx = tx & "c:""" & shp.OLEFormat.Object.Caption & """ " tx = tx & "t:""" & shp.OLEFormat.Object.Text & """ " tx = tx & "v:""" & shp.OLEFormat.Object.Value & """ " tx = tx & "[" & TypeName(shp.OLEFormat.Object) & "] " tx = tx & "| " tx = tx & "c:""" & shp.OLEFormat.Object.Object.Caption & """ " tx = tx & "t:""" & shp.OLEFormat.Object.Object.Text & """ " tx = tx & "v:""" & shp.OLEFormat.Object.Object.Value & """ " tx = tx & "[" & TypeName(shp.OLEFormat.Object.Object) & "] " On Error GoTo 0 tx = tx & "| " & vbCrLf Next MsgBox tx
En attendant.....
Ton code est vraiment horrible :
Sheets("ASD DPQR Tier 1" ).Select Rows("1:1" ).Select Selection.AutoFilter ActiveSheet.Range("$A$1:$DG$176" ).AutoFilter Field:=10 Sheets("Graph Highlight" ).Select Sheets("ASD DPQR Tier 1" ).Select Range("J1" ).Select ActiveSheet.Range("$A$1:$DG$176" ).AutoFilter Field:=10, Criteria1:= "LO1_R1X4_02" Sheets("Graph Highlight" ).Select
Je hais les Select/Selections/Truc.Activate/ActiveMachin !!! Beurk
Primo, ça consomme des ressources énormes, deuxio, ça ne sert à rien d'autre.
Justifie-moi les lignes 5, 6 et 7 !
Regarde ça :
Sheets("ASD DPQR Tier 1" ).Rows("1:1" ).AutoFilter Sheets("ASD DPQR Tier 1" ).Range("$A$1:$DG$176" ).AutoFilter Field:=10, Criteria1:= "LO1_R1X4_02" Sheets("Graph Highlight" ).Select '// A la fin, c'est justifiable.
Et je me demande pourquoi faire deux fois un filtre, une fois sur la ligne 1, une fois sur la zone A1:DG176.
Ceci devrait suffire :
Sheets("ASD DPQR Tier 1" ).Range("$A$1:$DG$176" ).AutoFilter Field:=10, Criteria1:= "LO1_R1X4_02"
- | Alerter
- | Alerter
Citation :
Info: Le Shape.Value peut être le numéro d'ordre de ton choix dans la combo, pas le texte choisi. Ca veut dire quoi?
Citation :
Est-ce un contrôle auquel tu associes une plage d'entrée et une cellule liée ? Si, oui, on devrait pouvoir s'en sortir facilement !
Oui c'est ça, à part que dans mon cas, je n'ai pas de cellule liée, je n'ai que la plage d'entrée
- | Alerter
- | Alerter
- | Alerter
zeb a dit :
Si oui, on devrait pouvoir s'en sortir facilement !
Exécute ce code pas à pas (Touche F8) et étudie-le :
Dim ws As Worksheet Dim sh As Shape Dim rg As Range Dim o As Object Dim i As Integer Dim v As String Stop '// On fait une pause. F8 pour continuer pas à pas. Set ws = Worksheets("La feuille qui contient la combo") '// La feuille qui contient la combo Set sh = ws.Shapes("Drop Down 68") '// La combo en tant que Shape Set o = sh.OLEFormat.Object '// La combo en tant qu'objet DropDown. If TypeName(o) <> "DropDown" Then MsgBox "L'objet n'est pas un DropDown mais un " & TypeName(o) & ".", vbCritical Exit Sub End If Set rg = Range(o.ListFillRange) '// La plage d'entrée i = o.Value '// La valeur numérique de la combo v = rg.Cells(i).Value '// La cellule contenant la bonne valeur. MsgBox "Eh Charly, c'est ça que tu cherches depuis deux jours : " & v & " ?"
Quand tu auras tout compris, tu pourras utiliser ça :
Function GetDropDownValue(dropdownname As String, Optional ws As Worksheet) As String Dim dd As Object If ws Is Nothing Then Set ws = ActiveSheet Set dd = ws.Shapes(dropdownname).OLEFormat.Object If TypeName(dd) <> "DropDown" Then Err.Raise vbObjectError + 512, "GetDropDownValue", "Not a DropDown object" GetDropDownValue = Range(dd.ListFillRange).Cells(dd.Value).Value End Function
Enjoy!
- | Alerter
!!!!!!!!
!!!!!!!!!!
Merci zeb, tu es mon sauveur, j'ai vraiment cru que je n'y arriverais jamais
Mais j'ai compris ce que fais la macro où il y a la textbox, donc c'est celle là que j'utilise dans ma macro principale!
Par contre, j'ai pas compris ce que fais la fonction :s
En tout cas, merci beaucoup!!
Problème résolu!
!!!!!!!!!!Merci zeb, tu es mon sauveur, j'ai vraiment cru que je n'y arriverais jamais
Mais j'ai compris ce que fais la macro où il y a la textbox, donc c'est celle là que j'utilise dans ma macro principale!
Par contre, j'ai pas compris ce que fais la fonction :s
En tout cas, merci beaucoup!!
Problème résolu!
- | Alerter
- | Alerter
Oh
Si tu ne comprends pas je suis déçu.
J'essaie d'être pédagogue et je ne donne en général pas de solution toute faite avant d'être sûr que tout le monde peut la comprendre.
Regarde bien ligne 19, 20 et 21 du premier code. Je considère la plage d'entrée (rg), je prends la valeur NUMERIQUE (=14 pour LO1_R1X4_02 dans ton exemple) et je prends cette n-ième valeur dans cette plage.
Ligne 7 du second code, je fais la même chose.
Relis-les bien tous les deux. Et comprends-les bien. C'est important. Surtout que c'est en pensant que cela peut être utile et instructif que je trouve l'envie de vous aider
Si tu ne comprends pas je suis déçu.J'essaie d'être pédagogue et je ne donne en général pas de solution toute faite avant d'être sûr que tout le monde peut la comprendre.
Regarde bien ligne 19, 20 et 21 du premier code. Je considère la plage d'entrée (rg), je prends la valeur NUMERIQUE (=14 pour LO1_R1X4_02 dans ton exemple) et je prends cette n-ième valeur dans cette plage.
Ligne 7 du second code, je fais la même chose.
Relis-les bien tous les deux. Et comprends-les bien. C'est important. Surtout que c'est en pensant que cela peut être utile et instructif que je trouve l'envie de vous aider
- | Alerter
Salut zeb,
En fait, c'est pas que j ene comprend pas le code, il est très bien, commenté et tout et tout.
C'est plutôt le pourquoi il faut faire ça?
Quand on dessine une combobox sous excel, il ne devrait pas au départ être considéré comme une shape ou même un user form?
C'est ça qui me choque
Ensuite, c'est vrai que j'ai pas beaucoup réfléchi dessus aujourd'hui, je verrai demain matin quand ma tête sera plus fraiche. surtout pour la fonction, je t'écrirais surement quelques posts encore,
Mais vraiment merci pour ton aide!!
Charly
En fait, c'est pas que j ene comprend pas le code, il est très bien, commenté et tout et tout.
C'est plutôt le pourquoi il faut faire ça?
Quand on dessine une combobox sous excel, il ne devrait pas au départ être considéré comme une shape ou même un user form?
C'est ça qui me choque
Ensuite, c'est vrai que j'ai pas beaucoup réfléchi dessus aujourd'hui, je verrai demain matin quand ma tête sera plus fraiche. surtout pour la fonction, je t'écrirais surement quelques posts encore,
Mais vraiment merci pour ton aide!!
Charly
- | Alerter
- | Alerter
Salut zeb,
De retour de week end, j'ai enfin pris le temps de bien tout relire, et tout va bien maintenant.
Mais je suis confronté à une nouvelle problématique, que je vais lancer dans un nouveau sujet, j'espère que tu pourras de nouveau m'aider
(le sujet concernera une macro la mise à jour d'un graphe où les données sont alimentées tous les jours)
Merci encore en tout cas,
Charly
De retour de week end, j'ai enfin pris le temps de bien tout relire, et tout va bien maintenant.
Mais je suis confronté à une nouvelle problématique, que je vais lancer dans un nouveau sujet, j'espère que tu pourras de nouveau m'aider
(le sujet concernera une macro la mise à jour d'un graphe où les données sont alimentées tous les jours)Merci encore en tout cas,
Charly
- | Alerter
Bonjour,
J'ai essayé de récupérer la valeur de ma liste déroulante qui se nome Boutton_Commercial avec le code suivant :
Code :
1.Sub Macro1()
2.Sheets("Comparatif par Marque").Cells(1, 2).Value = Workbooks("BASE_CLIENT").Worksheets("Comparatif par Marque").OLEObjects("Boutton_Contrat").Object.Value
3.End Sub
Avec ce code, j'obtient le message suivant :
Erreur d'execution : 9
L'indice n'appartient pas à la sélection
Je n'arrive pas à trouver le moyen d'attraper la valeur présente dans la liste déroulante (Contrôle de formulaire) intitulé "Boutton_Contrat"
J'espère que vous allez pouvoir m'aider.
Cordialement
J'ai essayé de récupérer la valeur de ma liste déroulante qui se nome Boutton_Commercial avec le code suivant :
Code :
1.Sub Macro1()
2.Sheets("Comparatif par Marque").Cells(1, 2).Value = Workbooks("BASE_CLIENT").Worksheets("Comparatif par Marque").OLEObjects("Boutton_Contrat").Object.Value
3.End Sub
Avec ce code, j'obtient le message suivant :
Erreur d'execution : 9
L'indice n'appartient pas à la sélection
Je n'arrive pas à trouver le moyen d'attraper la valeur présente dans la liste déroulante (Contrôle de formulaire) intitulé "Boutton_Contrat"
J'espère que vous allez pouvoir m'aider.
Cordialement
- | Alerter
- | Alerter
Voila, Désolé j'avais pas trouvé comment faire.
Bonjour,
J'ai essayé de récupérer la valeur de ma liste déroulante qui se nome Boutton_Commercial avec le code suivant :
Avec ce code, j'obtient le message suivant :
Erreur d'execution : 9
L'indice n'appartient pas à la sélection
Je n'arrive pas à trouver le moyen d'attraper la valeur présente dans la liste déroulante (Contrôle de formulaire) intitulé "Boutton_Contrat"
J'espère que vous allez pouvoir m'aider.
Cordialement
Bonjour,
J'ai essayé de récupérer la valeur de ma liste déroulante qui se nome Boutton_Commercial avec le code suivant :
Sub Macro1()
Sheets("Comparatif par Marque" ).Cells(1, 2).Value = Workbooks("BASE_CLIENT" ).Worksheets("Comparatif par Marque" ).OLEObjects("Boutton_Contrat" ).Object.Value
End Sub
Avec ce code, j'obtient le message suivant :
Erreur d'execution : 9
L'indice n'appartient pas à la sélection
Je n'arrive pas à trouver le moyen d'attraper la valeur présente dans la liste déroulante (Contrôle de formulaire) intitulé "Boutton_Contrat"
J'espère que vous allez pouvoir m'aider.
Cordialement
- | Alerter
- | Alerter
En effet c'est bien cela.
J'aimerai rajouter le nom de la feuille dans la Macro Lorsque je le met, j'obtient un message voici le code :
Message d'erreur : Erreur de compilation Incompatibilité de type.
Désolé je suis vraiment un novice
En tout cas merci pour votre aide.
J'aimerai rajouter le nom de la feuille dans la Macro Lorsque je le met, j'obtient un message voici le code :
Function GetDropDownValue(dropdownname As String, Optional ws As Worksheet) As String
Dim dd As Object
If ws Is Nothing Then Set ws = ActiveSheet
Set dd = ws.Shapes(dropdownname).OLEFormat.Object
If TypeName(dd) <> "DropDown" Then Err.Raise vbObjectError + 512, "GetDropDownValue", "Not a DropDown object"
GetDropDownValue = Range(dd.ListFillRange).Cells(dd.Value).Value
End Function
Sub TEST2()
Sheets("Comparatif par Marque").Cells(1, 1).Value = GetDropDownValue("Boutton_Commercial", "Comparatif par Marque")
End Sub
Message d'erreur : Erreur de compilation Incompatibilité de type.
Désolé je suis vraiment un novice
En tout cas merci pour votre aide.
- | Alerter
Si tu ne parles qu'à moi, dis-moi tu.
Si tu as une erreur, il faut dire où !!!!!!! (Je devine que c'est ligne 12
)
Un objet Sheet, c'est un onglet, feuille ou graphique : Utilise Worksheet, qui est plus précis.
GetDropDownValue est une fonction qui attend un nom de DropDown et une feuille. Toi, tu lui donnes un nom de DropDown, et un nom de feuille. Ce n'est pas pareil.
Si tu as une erreur, il faut dire où !!!!!!! (Je devine que c'est ligne 12
)Un objet Sheet, c'est un onglet, feuille ou graphique : Utilise Worksheet, qui est plus précis.
GetDropDownValue est une fonction qui attend un nom de DropDown et une feuille. Toi, tu lui donnes un nom de DropDown, et un nom de feuille. Ce n'est pas pareil.
- | Alerter
- | Alerter
- | Alerter
- | Alerter
Il ne faut pas confondre les types et les collections.
Une feuille, c'est une seule feuille.
Une collection de feuilles c'est plusieurs feuilles, parmi lesquelles il faut en choisir une !
Donc :
Worksheet, c'est le type Feuille de calcul,
Chart, c'est le type Onglet Graphique.
Worksheets, c'est la collection de toutes les feuilles de calcul,
Charts, c'est la collection de toutes les onglets graphiques,
Sheets, c'est la collection de onglets, feuilles de calcul et onglets graphiques.
Proposition de lecture : http://www.presence-pc.com/forum/ppc/Programmation/exce...
Une feuille, c'est une seule feuille.
Une collection de feuilles c'est plusieurs feuilles, parmi lesquelles il faut en choisir une !
Dim wsCompParMrq As Worksheet ' // <-- Une feuille
Dim wsNumber1 As Worksheet ' // <-- Une autre feuille
Set wsCompParMrq = Worksheets("Comparatif par marque") ' // Par nom
Set wsNumber1 = Worksheets(1) ' // Par numéro
MsgBox "Feuille 'Comparatif par marque' : " & vbCrLf & _
" Nom : " & vbTab & wsCompParMrq.Name & vbCrLf & _
" Code : " & vbTab & wsCompParMrq.CodeName & vbCrLf & _
" Num. : " & vbTab & wsCompParMrq.Index
Donc :
Proposition de lecture : http://www.presence-pc.com/forum/ppc/Programmation/exce...
- | Alerter
Lassé par la pub ? Créez un compte