2 codes postaux/villes dans le même formulaire

Merci,

J'ai toujours une erreur de compil...

je pige pas !

Il n'y aurait pas une autre méthode pour avoir ce résultat ?

capture
Bruno45 a écrit :

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

As-tu ré-essayé de l'ouvrir ?

ou bien est-ce un problème d'accès à cjoint ?

capture d ecran 44

il telecharge pas de soucis, par contre j'ai ce message :

Bruno45 a écrit :

il telecharge pas de soucis, par contre j'ai ce message :

je suis très surpris de cette extension en xlsx, c'est du xlsm (voir ma capture d'écran)

change l'extension,ou complète ce fichier joint ici

Ci-joint le fichier INCOMPLET (il n'y a que les 9 premiers départements)

Merci steelson,

ton fichier fonctionne comme je le souhaite,

Par contre dès que je l'intègre dans le mien çà bug !

Crois tu savoir pourquoi ?

Avec ton fichier :

Si j'affecte réellement CpClient, VilleClient à une cellule la recherche se fait mais si je valide la ville la box reste vide.

Si j'affecte réellement CpEven VilleEven à une cellule j'ai une erreur dès la fin de la saisie du code postal

Essaie de ton coté de nommer les cellules CpEven.... etc ... sur la feuille CPF tu vas voir le code plante.

cordialement,

Bruno

capture

Feuil1 m'a toujours chiffonné ... essaie ceci

Private Sub cp_Change()
If Len(cp.Value) < 5 Then Exit Sub
With Ville
  .Clear
  For Each cel In Sheets("CPF").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 Sheets("CPF").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 Sheets("CPF").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 Sheets("CPF").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

Ajoute aussi Me.

Private Sub cp_Change()
If Len(Me.cp.Value) < 5 Then Exit Sub
With Me.Ville
  .Clear
  For Each cel In Sheets("CPF").Columns(1).SpecialCells(xlCellTypeConstants)
    If UCase(Me.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 Sheets("CPF").Columns(2).SpecialCells(xlCellTypeConstants)
  If UCase(cel) = UCase(Me.Ville) And cel.Row > 1 Then
    Me.Ville = cel
    Me.cp = cel.Offset(0, -1)
    Exit Sub
  End If
Next
End Sub

Private Sub CpEvenement_Change()
If Len(Me.CpEvenement.Value) < 5 Then Exit Sub
With Me.VilleEvenement
  .Clear
  For Each cel In Sheets("CPF").Columns(1).SpecialCells(xlCellTypeConstants)
    If UCase(Me.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 Sheets("CPF").Columns(2).SpecialCells(xlCellTypeConstants)
  If UCase(cel) = UCase(Me.VilleEvenement) And cel.Row > 1 Then
    Me.VilleEvenement = cel
    Me.CpEvenement = cel.Offset(0, -1)
    Exit Sub
  End If
Next
End Sub

S'il subsiste un conflit, reste à changer les noms !

Bonjour Steelson

j'entre le code postal du premier .ok il va chercher la ville correspondante ok je sélectionne ok..

Dés que je sors de la box VilleClient c'est à dire la premiere cela fait une erreur inattendue et en débogage cela m'envoie sur le .clear de Private Sub CpEvenement_Change() ....

Ne penses tu pas qu'il y aurait une autre méthode pour faire cela que celle qu'on essaie d'utiliser ?

amicalement,

Bruno

je viens de faire un test en supprimant l'affectation des "RowSource" des 2 CpEvent et VilleEvent cela ne bug plus ... sauf que j'ai plus l'info dans ce cas dans mes cellules dans la feuille "information client"

je me demande si je faisais 2 usf une pour client et une pour évènement si cela ne résoudrait pas le problème ...?

Dommage de ne pas comprendre.

Cela dit, ce code m'interpelle car il renvoie dans les 2 sens ... le CP modifie la Ville qui elle-même renvoie vers le CP ! et là je me suis étonné moi-même d'y être arrivé dans la version expurgée !!

J'aurais penché vers une solution de type saisie prédictive avec

  • soit le code postal en premier
  • soit le début du nom de la ville

Je vais regarder ce soir ce que j'ai en "stock".

Ok j'attends de tes nouvelles ... j'ai constaté aussi que si je saisie un cp avec un 0 en debut Il va chercher la ville mais lors de la sélection il me met un blanc dans la box !

Bon autant pour moi ... cela fonctionne

J'avais fait une erreur sur l'affectation du nom de cellule sur CpEven j'avais mis CpVille dans les 2 box.

Par contre comment je peux laisser ce foutu zero lors de la saisie du code postal car comme je l'ai dit au dessus il disparaît et donc la ville disparaît aussi après la sélection !

Edit : j'ai trouvé, il suffit que j'applique aux cellules CP un format texte et non pas le format code postal.

Encore merci pour tout Steelson et les autres.

A la prochaine

Bruno

Merci aussi à Leakim pour le temps passé !

Je te conseille quand même d'ajouter :

Me.Ville = ""
' ...
Me.VilleEvenement = ""
' ...

avant le .clear

Private Sub cp_Change()
If Len(Me.cp.Value) < 5 Then Exit Sub
Me.Ville = ""
With Me.Ville
  .Clear
  For Each cel In Sheets("CPF").Columns(1).SpecialCells(xlCellTypeConstants)
    If UCase(Me.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 Sheets("CPF").Columns(2).SpecialCells(xlCellTypeConstants)
  If UCase(cel) = UCase(Me.Ville) And cel.Row > 1 Then
    Me.Ville = cel
    Me.cp = cel.Offset(0, -1)
    Exit Sub
  End If
Next
End Sub

Private Sub CpEvenement_Change()
If Len(Me.CpEvenement.Value) < 5 Then Exit Sub
Me.VilleEvenement = ""
With Me.VilleEvenement
  .Clear
  For Each cel In Sheets("CPF").Columns(1).SpecialCells(xlCellTypeConstants)
    If UCase(Me.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 Sheets("CPF").Columns(2).SpecialCells(xlCellTypeConstants)
  If UCase(cel) = UCase(Me.VilleEvenement) And cel.Row > 1 Then
    Me.VilleEvenement = cel
    Me.CpEvenement = cel.Offset(0, -1)
    Exit Sub
  End If
Next
End Sub

C'est fait .... merci encore pour tout .

Amicalement,

Bruno

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