OVH Cloud OVH Cloud

Excel VBA et Contrôles VB

3 réponses
Avatar
Papa31
Bonjour,

J'aimerai pouvoir détecter, en programmation, si une cellule est liée à un
Contrôle, type listbox, combobox ou autre :
En fait, j'essaie de récupérer les données d'un formulaire.
Malheureusement, chaque fois que je passe dans une cellule sur laquelle un
Contrôle à été placé, je récupère l'index et non la valeur...
J'aimerais donc savoir comment récupérer cette valeur, comment on peut
connaitre la présence d'un controle dans une feuille de calcul et comment on
peut y faire référence.
Par avance, merci

3 réponses

Avatar
michdenis
Bonjour Papa31,

Voici une façon de faire... j'ai supposé que la cellule A1
de la feuil1 était une cellule liée à un un contrôle issu
de la boîte d'outils "contrôle"

'--------------------------
Sub Test()

Dim Adr As String
With Worksheets("Feuil1")
Adr = .Name & "!" & .Range("A1").Address
For Each obj In Worksheets(1).OLEObjects
If Not Intersect(Range(obj.LinkedCell), _
Range(Adr)) Is Nothing Then
MsgBox "le contrôle " & obj.Name & _
" a une cellule liée : " & Adr & "."
End If
Next
End With
End Sub
'--------------------------


Salutations!



"Papa31" a écrit dans le message de news:
Bonjour,

J'aimerai pouvoir détecter, en programmation, si une cellule est liée à un
Contrôle, type listbox, combobox ou autre :
En fait, j'essaie de récupérer les données d'un formulaire.
Malheureusement, chaque fois que je passe dans une cellule sur laquelle un
Contrôle à été placé, je récupère l'index et non la valeur...
J'aimerais donc savoir comment récupérer cette valeur, comment on peut
connaitre la présence d'un controle dans une feuille de calcul et comment on
peut y faire référence.
Par avance, merci
Avatar
Papa31
La propriété OLEObjects permet de lister les objets liés d'une feuille de
calcul, objets qui ont été inserrés à partir de la Boite d'outils de
Microsoft Excel.

Malheureusement, les objets issus du Formulaire excel ne sont pas des Objets
de ce type... Le tout étant de savoir, de quel type sont ces objets ?

Si vous avez une réponse...


Bonjour Papa31,

Voici une façon de faire... j'ai supposé que la cellule A1
de la feuil1 était une cellule liée à un un contrôle issu
de la boîte d'outils "contrôle"

'--------------------------
Sub Test()

Dim Adr As String
With Worksheets("Feuil1")
Adr = .Name & "!" & .Range("A1").Address
For Each obj In Worksheets(1).OLEObjects
If Not Intersect(Range(obj.LinkedCell), _
Range(Adr)) Is Nothing Then
MsgBox "le contrôle " & obj.Name & _
" a une cellule liée : " & Adr & "."
End If
Next
End With
End Sub
'--------------------------


Salutations!



"Papa31" a écrit dans le message de news:
Bonjour,

J'aimerai pouvoir détecter, en programmation, si une cellule est liée à un
Contrôle, type listbox, combobox ou autre :
En fait, j'essaie de récupérer les données d'un formulaire.
Malheureusement, chaque fois que je passe dans une cellule sur laquelle un
Contrôle à été placé, je récupère l'index et non la valeur...
J'aimerais donc savoir comment récupérer cette valeur, comment on peut
connaitre la présence d'un controle dans une feuille de calcul et comment on
peut y faire référence.
Par avance, merci





Avatar
michdenis
As -tu essyé ceci :

'------------------------------------
Sub Test()

Dim Adr As String
On Error Resume Next
With Worksheets("Feuil3")
Adr = .Name & "!" & .Range("A1").Address
For Each obj In Worksheets("Feuil3").Shapes
If Not Intersect(Range(obj.OLEFormat.Object.LinkedCell), _
Range(Adr)) Is Nothing Then
If Err = 0 Then
MsgBox "le contrôle " & obj.OLEFormat.Object.Name & _
" a une cellule liée : " & Adr & "."
Else
Err = 0
End If
End If
Next
End With
End Sub
'------------------------------------


Salutations!



"Papa31" a écrit dans le message de news:
La propriété OLEObjects permet de lister les objets liés d'une feuille de
calcul, objets qui ont été inserrés à partir de la Boite d'outils de
Microsoft Excel.

Malheureusement, les objets issus du Formulaire excel ne sont pas des Objets
de ce type... Le tout étant de savoir, de quel type sont ces objets ?

Si vous avez une réponse...


Bonjour Papa31,

Voici une façon de faire... j'ai supposé que la cellule A1
de la feuil1 était une cellule liée à un un contrôle issu
de la boîte d'outils "contrôle"

'--------------------------
Sub Test()

Dim Adr As String
With Worksheets("Feuil1")
Adr = .Name & "!" & .Range("A1").Address
For Each obj In Worksheets(1).OLEObjects
If Not Intersect(Range(obj.LinkedCell), _
Range(Adr)) Is Nothing Then
MsgBox "le contrôle " & obj.Name & _
" a une cellule liée : " & Adr & "."
End If
Next
End With
End Sub
'--------------------------


Salutations!



"Papa31" a écrit dans le message de news:
Bonjour,

J'aimerai pouvoir détecter, en programmation, si une cellule est liée à un
Contrôle, type listbox, combobox ou autre :
En fait, j'essaie de récupérer les données d'un formulaire.
Malheureusement, chaque fois que je passe dans une cellule sur laquelle un
Contrôle à été placé, je récupère l'index et non la valeur...
J'aimerais donc savoir comment récupérer cette valeur, comment on peut
connaitre la présence d'un controle dans une feuille de calcul et comment on
peut y faire référence.
Par avance, merci