2 codes postaux/villes dans le même formulaire

Bonjour,

j'ai récupéré un code vba sur un des postes de ce forum pour avoir la ville automatiquement dans un formulaire et cela fonctionne. (Merci au créateur).

Mon problème est que j'ai besoin de 2 adresses dans ce formulaire "CP et ville du client" et une seconde adresse ou se déroulera l'évènement "CP et ville évènement". Mais lorsque je mets un cp dans le premier cela mets a jour la ville du premier mais aussi le second et vise et versa.

j'ai donc affecté ce code en affectant les noms des "box" concernées. j'ai essayé de modifier quelques paramètres dans les seconds codes sans succès. pouvez m'aider s'il vous plait. Je précise bien que vous devez vous en douter je suis nul en vba.

Private Sub cp_Change()
If Len(cp.Value) < 5 Then Exit Sub
With Ville
  .Clear
  For Each cel In Feuil1.Columns(1).SpecialCells(xlCellTypeConstants)
    If UCase(cp) = UCase(cel) Then .AddItem cel.Offset(0, 1).Value
  Next
  .SetFocus
  .DropDown
End With
End Sub

Private Sub ville_Change()
For Each cel In Feuil1.Columns(2).SpecialCells(xlCellTypeConstants)
  If UCase(cel) = UCase(Ville) And cel.Row > 1 Then
    Ville = cel
    cp = cel.Offset(0, -1)
    Exit Sub
  End If
Next
End Sub

Private Sub CpEvenement_Change()
If Len(cp.Value) < 5 Then Exit Sub
With Ville
  .Clear
  For Each cel In Feuil1.Columns(1).SpecialCells(xlCellTypeConstants)
    If UCase(cp) = UCase(cel) Then .AddItem cel.Offset(0, 1).Value
  Next
  .SetFocus
  .DropDown
End With
End Sub

Private Sub VilleEvenement_Change()
For Each cel In Feuil1.Columns(2).SpecialCells(xlCellTypeConstants)
  If UCase(cel) = UCase(Ville) And cel.Row > 1 Then
    Ville = cel
    cp = cel.Offset(0, -1)
    Exit Sub
  End If
Next
End Sub

Merci pour votre aide.

Je pense que tu as un problème de nommage de tes textbox, et un problème d'appel dans ta procédure car je voix cp comme ville dans les 4 sub ci-dessus, mais jamais CpEvenement et VilleEvenement.

Mets un bout de ton fichier excel pour y voir plus clair et notamment voir les différents noms des textbox.

Merci pour ta réponse.

suite a ce que tu viens de me dire je pense que je dois mettre dans le programme les noms utilisés dans le Sub c'est bien cela ?

car j'ai fait beaucoup de modifs sans succès mais pas ce que tu suggères. Je teste et reviens vers vous.

Merci

Bon, j'ai essayé quelques modifs en mettant le nom contenu dans les sub mais cela ne fonctionne pas.

Je n'ai sans doute pas tout compris ou alors changé trop de variables. j'ai remplacé les "cp et ville" dans les codes VilleEvenement et CpEvenement par leur nom de sub mais ca n'a pas l'air de fonctionner.

Je rappelle que les 2 premiers codes fonctionnent (sub cp_ et Ville_ ) c'est pour les 2 suivants qu'il y a embrouille.

Je ne vois pas ce que je dois joindre en plus en code ?

Pouvez-vous me modifier les sub contenant Evenement pur que je puisse tester ?

Merci

Salut,

Avec un fichier joint cela serait plus simple.

Oui tu as copier coller tes codes sans changer les éléments "déclencheurs"

il faut que tu attributs des noms différents à tes textbox ou listbox, tu peux aussi créer deux listes de CP et villes...

Mais avec un fichier cela serait mieux.

Leakim

ok je vous joint le fichier.

je ne vois pas mon fichier joint ???

Tu peux le faire avec le forum dans la limite de 300Ko, je crois.

Sinon, tu peux utiliser http://www.cjoint.com/

A te relire,

Leakim

Merci, voici le lien

Il me manque des objets pour tester ton fichier

essais pour tes deux derniers codes

Private Sub CpEvenement_Change()
If Len(CpEvenement.Value) < 5 Then Exit Sub
With VilleEvenement
  .Clear
  For Each cel In Feuil1.Columns(1).SpecialCells(xlCellTypeConstants)
    If UCase(cp) = UCase(cel) Then .AddItem cel.Offset(0, 1).Value
  Next
  .SetFocus
  .DropDown
End With
End Sub

Private Sub VilleEvenement_Change()
For Each cel In Feuil1.Columns(2).SpecialCells(xlCellTypeConstants)
  If UCase(cel) = UCase(Ville) And cel.Row > 1 Then
    VilleEvenement = cel
    CpEvenement = cel.Offset(0, -1)
    Exit Sub
  End If
Next
End Sub

Leakim

Merci pour ton coup de main.

Par contre il me met une erreur de compilation :

j'ai joint l'image.

l'objet qu'il manque doit être la macro qui transforme les chiffres en texte.

capture

Re,

Autant pour moi

Private Sub VilleEvenement_Change()
For Each cel In Feuil1.Columns(2).SpecialCells(xlCellTypeConstants)
  If UCase(cel) = UCase(Ville) And cel.Row > 1 Then
    Ville = cel
    CpEvenement = cel.Offset(0, -1)
    Exit Sub
  End If
Next
End Sub

Leakim

Est-ce que je dois comprendre que le premier code fonctionne?

Idem mais plus au même endroit.

dès que je sors de la ville code du haut (ville client).

Oui le premier fonctionne .... pour client oui c'est pour évènement qu'il se mélange les pinceaux.

capture

Bonjour,

je reviens aux nouvelles ? y a t'il une solution à mon problème .

Merci

Salut,

Je suis actuellement aux USA donc avec un décalage horaire

Je dois avoué que je suis surpris du bug. J'ai peur d'être un peu court sur la VBA pour résoudre ton post.

J'en suis désolé.

Bonne continuation.

Leakim

et moi j'en suis ici :

capture d ecran 43

J'ai épuré ... voici le résultat : https://www.cjoint.com/c/FLpnYkUxiww

Merci Leakim d'avoir essayé.

Steelson ton fichier je n'arrive pas a l'ouvrir.

cordialement,

Bruno

Bonsoir Steelson

je ne sais comment as prévu Bruno45, mais sur l'usf je verrai bien une combo pour donner le choix du CP

et dans l'autre la où les villes correspondantes

sur celui que j'utilise j'ai une listbox a la place d'une combobox

voila mon idée

Peut importe le programme que je dois utiliser celui-ci ou un autre, je cherche juste à pouvoir renseigner la ville et le cp du client et le ville et cp du lieu de l'évènement dans le meme formulaire.

je chercher surtout a pouvoir sélectionner la ville après avoir mis le code postal car j'ai plusieurs ville/village pour un même code postal.

Merci encore à tous pour votre investissement.

Bruno45 a écrit :

Merci Leakim d'avoir essayé.

Steelson ton fichier je n'arrive pas a l'ouvrir.

cordialement,

Bruno

Private Sub cp_Change()
If Len(cp.Value) < 5 Then Exit Sub
With Ville
  .Clear
  For Each cel In Feuil1.Columns(1).SpecialCells(xlCellTypeConstants)
    If UCase(cp) = UCase(cel) Then .AddItem cel.Offset(0, 1).Value
  Next
  .SetFocus
  .DropDown
End With

End Sub

Private Sub ville_Change()
For Each cel In Feuil1.Columns(2).SpecialCells(xlCellTypeConstants)
  If UCase(cel) = UCase(Ville) And cel.Row > 1 Then
    Ville = cel
    cp = cel.Offset(0, -1)
    Exit Sub
  End If
Next
End Sub

Private Sub CpEvenement_Change()
If Len(CpEvenement.Value) < 5 Then Exit Sub
With VilleEvenement
  .Clear
  For Each cel In Feuil1.Columns(1).SpecialCells(xlCellTypeConstants)
    If UCase(CpEvenement) = UCase(cel) Then .AddItem cel.Offset(0, 1).Value
  Next
  .SetFocus
  .DropDown
End With
End Sub

Private Sub VilleEvenement_Change()
For Each cel In Feuil1.Columns(2).SpecialCells(xlCellTypeConstants)
  If UCase(cel) = UCase(VilleEvenement) And cel.Row > 1 Then
    VilleEvenement = cel
    CpEvenement = cel.Offset(0, -1)
    Exit Sub
  End If
Next
End Sub

Je t'envoie éventuellement le fichier allégé et tu y remets les codes postaux ... si nécessaire !

Rechercher des sujets similaires à "codes postaux villes meme formulaire"