M
m0j0man_fr
Guest
Bonjour à tous, voilà mon problème:
feuille "code postaux" de mon classeur:
colonne A : il y a une liste de noms de villes (tous en majuscules)
colonne B : il y a les codes postaux des villes
feuille "Liste clientèle" de mon classeur:
lorsque l'utilisateur tape dans la colonne E un nom de ville une macro va chercher le code postal correspondant dans la feuille "code postaux" et l'insere automatiquement dans la colonne F de la feuille travail.
cette macro se trouve dans le code de la feuille travail, c'est la procédure evenementielle Worksheet_Change(ByVal Target As Range) avec un test pour savoir si target.column=5 (colonne des villes)
jusque là impeccable
là ou ca se corse c'est que je veux que les noms de ville que l'utilisateur entre dans la colonne F soient toujours en majuscules.
J'ai donc ajouté au code de la procédure événementielle (qui jusque là se contentait d'aller chercher le code postal) deux lignes de code avec la fonction Ucase qui change le contenu de la cellule en majuscules.
Malheureusement , cela a pour effet de reboucler infiniment sur l'événement change. en effet:
l'utilisateur entre un nom -> événement change
donc convertion du nom en majuscule
donc re événement change
donc reconversion en majuscules
donc re re événement change
etc...
et voilà, c'est en vrac !
donc ma question est simple:
je veux :
1-convertir le contenu de la cellule en majuscules quand on entre du texte dans la cellule
2-utiliser le texte convertit pour une recherche
et éviter cette p.... de boucle infinie !
merci pour vos propositions
je joins le code de ma macro:
*************************************************
*************************************************
Private Sub Worksheet_Change(ByVal Target As Range)
Dim ville As String
'
If Target.Column = 5 Then
'
ville = UCase(Target.Value)
Target.Value = ville
'
derligne = Sheets("code postaux").Range("A1").End(xlDown).Row
For ligne = 2 To derligne
If Sheets("code postaux").Cells(ligne, 1) = ville Then
Target.Offset(0, 1).Value = Sheets("code postaux").Cells(ligne, 2)
Exit Sub
End If
Next ligne
End If
'
End Sub
feuille "code postaux" de mon classeur:
colonne A : il y a une liste de noms de villes (tous en majuscules)
colonne B : il y a les codes postaux des villes
feuille "Liste clientèle" de mon classeur:
lorsque l'utilisateur tape dans la colonne E un nom de ville une macro va chercher le code postal correspondant dans la feuille "code postaux" et l'insere automatiquement dans la colonne F de la feuille travail.
cette macro se trouve dans le code de la feuille travail, c'est la procédure evenementielle Worksheet_Change(ByVal Target As Range) avec un test pour savoir si target.column=5 (colonne des villes)
jusque là impeccable
là ou ca se corse c'est que je veux que les noms de ville que l'utilisateur entre dans la colonne F soient toujours en majuscules.
J'ai donc ajouté au code de la procédure événementielle (qui jusque là se contentait d'aller chercher le code postal) deux lignes de code avec la fonction Ucase qui change le contenu de la cellule en majuscules.
Malheureusement , cela a pour effet de reboucler infiniment sur l'événement change. en effet:
l'utilisateur entre un nom -> événement change
donc convertion du nom en majuscule
donc re événement change
donc reconversion en majuscules
donc re re événement change
etc...
et voilà, c'est en vrac !
donc ma question est simple:
je veux :
1-convertir le contenu de la cellule en majuscules quand on entre du texte dans la cellule
2-utiliser le texte convertit pour une recherche
et éviter cette p.... de boucle infinie !
merci pour vos propositions
je joins le code de ma macro:
*************************************************
*************************************************
Private Sub Worksheet_Change(ByVal Target As Range)
Dim ville As String
'
If Target.Column = 5 Then
'
ville = UCase(Target.Value)
Target.Value = ville
'
derligne = Sheets("code postaux").Range("A1").End(xlDown).Row
For ligne = 2 To derligne
If Sheets("code postaux").Cells(ligne, 1) = ville Then
Target.Offset(0, 1).Value = Sheets("code postaux").Cells(ligne, 2)
Exit Sub
End If
Next ligne
End If
'
End Sub