Pb Variable public vers userform

Bonjour,

Je reviens vers vous pour un probleme de variable.

Je récupère, enfin j'essai, dans ma Feuil1 la Variable "REF"

Option Explicit
Public REF As String
Public Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim a As String

a = Target.Value
 If Target.Value = "Plan" Then
 REF = Target(, -4).Value & ".jpeg"
  formimg.Show
 End If

End Sub

J'aimerai récupérer cette variable dans l'initialisation de mon userform pour que le ListBox1.ListIndex = REF. ( et ainsi affiché l'image sélectionné par l'utilisateur)

Systématiquement REF à dans le userform la valeur ""

Je vous joins un fichier exp

Si vous avez une piste je suis preneur

Bonjour

Votre variable Public REF as string n'est pas bien placée.

Mettez là dans le module 1 juste au dessus de la macro FUNCTION Listing fichiers

Ensuite dans votre feuille remplacez votre code Public Sub Worksheet comme ceci

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Value = "Plan" Then
    REF = Target(, -4).Value & ".jpeg"
    formimg.Show
Else: Exit Sub
End If
End Sub

Dans les feuilles les macros sont de type Private par défaut. La mettre en Public ne permet pas à excel de l'exécuter

Cordialement

Edit : modifié code (--> Else : exit sub)

Merci, très rapide et ca fonctionne parfaitement

et j'abuse d'une dernière question le listbox.index attend une valeur type numerique, comment puis je lui indiquer de sélectionner la valeur correspondant à la variable ( text)?

et j'abuse d'une dernière question le listbox.index attend une valeur type numerique, comment puis je lui indiquer de sélectionner la valeur correspondant à la variable ( text)?

Sans voir le fichier, si je comprends vous voulez sélectionner la variable REF dans la listbox ?
Si oui, il faut parcourir les items de la listbox jusqu'à trouver la variable REF
Peut être un truc du genre

dim i as integer
For i = 0 To Me.ListBox1.ListCount - 1

if Me.ListBox1.List(i) = REF then 
.... 'on fait quelque chose
end id
Next i

C'est exactement cela je suis passé par

For k = 0 To ListBox1.ListCount - 1
a = ListBox1.List(k)
If a = REF Then
    ListBox1.ListIndex = k
End If
Next k

il y avait peut etre plus orthodoxe, mais ca fonctionne.

Merci pour ton aide

Inutile de créer des variables pour "le plaisir". votre code comme ceci

For k = 0 To ListBox1.ListCount - 1
if ListBox1.List(k) = REF then 
    ListBox1.ListIndex = k
End If
Next k

Bien que je ne vois pas trop pourquoi vous voulez utiliser le Listindex

Crdlt

Il y a possibilité de ne pas l'utiliser ?

Désolé mais je n'avais fait attention à votre USF "Forming" qui était présente dans le fichier

Dans la Sub initialize, essayez en remplaçant

ListBox1.ListIndex = REF

par ceci

Dim i As Integer
With Me.ListBox1
    For i = 0 To .ListCount - 1
        If .List(i) = REF Then .Selected(i) = True: Exit Sub
    Next i
End With

C'est parfait, ca roule parfaitement

Un grand merci pour ton aide.

Rechercher des sujets similaires à "variable public userform"