Ouverture UserForm en fonction d'une cellule

Bonjour à tous,

Je cherche à faire en sorte qu'un UserForm s'ouvre automatiquement en fonction de la valeur dans une cellule. J'ai déjà cherché sur Internet seulement mon cas est un peu particulier : on n'accède pas immédiatement à la cellule en question, je ne peut donc pas passer par ByVal Target (en tout cas j'ai pas réussi).

Je vous joins un exemple un peu bateau : Sur la feuille "Import" l'utilisateur ne dois que entrer la Ville, et le Pays doit être remplie automatiquement grâce à la feuille "Attributs". Ce qu'il faudrait c'est que si la cellule B3 affiche "Entrée manuelle nécessaire", le UserForm s'ouvre.

J'espère avoir été assez clair, et merci d'avance pour votre aide.

Nicolas

6exemple.xlsx (11.77 Ko)

Bonjour,

Cela aurait été mieux de mettre un fichier .xlsm avec votre userform.

Effectivement, désolé !

Re-voici le fichier prenant en charge les macros, j'y ai ajouté un UserForm qui s'appelle "Exemple".

4exemple.xlsm (16.54 Ko)

Bonjour Nicolas, re-Eric , le forum,

Une variante...à tester également....

Cordialement,

Merci beaucoup pour votre aide, j'ai adapté la solution de Éric et ça marche !

Par contre j'ai oublié un détail qui a son importance : dans le vrai fichier la ville les champs sont récupérés automatiquement grâce à un code via un add-in d'Excel, sauf que :

  • il n'y a pas un code unique par ville,
  • et on ne peut pas faire de table d'équivalence comme ici (le vrai domaine est celui de la finance, donc on n'a pas la main sur la création des codes)

Du coup on n'est jamais sur la cellule cible ! Si j'arrive à vous faire un exemple je vous l'envoie.

Je suis pas certain d'être super clair dans ce que je raconte, milles excuses en tout cas pour avoir oublié ça !

Nicolas

Voilà un exemple qui tiens à peu près la route : Sur la page "Import" vous entrez votre code en A3 et l'Add-in récupère la ville de son côté (simulé ici par l'aléatoire). Si la ville qui sort n'existe pas dans la base de donnée "Attributs" (ici, Lyon), il faudrait que le UserForm s'ouvre immédiatement, sans avoir à cliquer d'abord en E3.

Merci en tout cas pour votre aide !

Nicolas

Dans le module d'onglet Recup add-in :

Private Sub Worksheet_Change(ByVal Target As Range)

      If Target.Count > 1 Then Exit Sub

      If Not Intersect(Target, Range("A3")) Is Nothing Then
         If AppartientAt_Villes(Target) = False Then Exemple.Show
      End If

End Sub

Pas sûr d'avoir compris ton code, je l'ai ajouté à mon fichier, mais ton code ne a que marcher si je suis en A3 sur Recup Add-in, non ? En plus A3 c'est un code, donc il ne sera jamais dans la base ?

J'ai fait ça autrement finalement, voila ma macro sur la feuille Import (il y a sûrement mieux, mais ça marche, ce qui est déjà pas mal) :

Private Sub Worksheet_Change(ByVal Target As Range)

      If Target.Count > 1 Then Exit Sub
'      Application.Wait (Now + TimeValue("00:00:02"))
      If Range("D3") = "Entrée manuelle nécessaire" Then Exemple.Show

End Sub

Seulement j'ai un souci dans le vrai fichier : comme dit je récupère les données via un Add-in, il y a donc quelques secondes avant que les cellules ne soient remplies mais la macro s'exécute quand même tout de suite. J'ai essayé de passer par un Application.Wait(), mais tout le fichier se met en pause, du coup les cellules ne sont toujours pas remplis... Une idée ?

Nicolas

Je n'ai sans doute rien compris alors :

Bonjour,

J'ai finalement trouvé mon bonheur, je vous joins mon code si un jour il peut aider quelqu'un

Private Sub Worksheet_Change(ByVal Target As Range)
      If Target.Count > 1 Then Exit Sub
      Application.OnTime (Now + TimeValue("00:00:02")), "DansBase"
End Sub

Sub DansBase()
    If Range("H5") = "Entrée manuelle nécessaire" Then Call OuvreFormulaire
End Sub

Merci tout cas pour ton aide Eric :)

Nicolas

Rechercher des sujets similaires à "ouverture userform fonction"