VAB Formats de 2 champs, l'un en majuscules et l'autre 1ere lettre en maj

patouman

XLDnaute Occasionnel
Bonjour à tous

je n'arrive pas a finir cette macro, j'espere que l'un d'entre vous pourra me dépanner pour la fin;

- dans le champ c11:c250 je saisis des noms, mon code ci dessous permet de le transformer en MAJ
(jusque là tout va bien)

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("C11:c250")) Is Nothing Then Target = UCase(Target)
End Sub

- dans le champ d11:d250 je saisis des prénoms, je souhaiterais donc obliger la 1ere lettre en MAJ et le reste en MIN
(et là plus rien ne va, je ne trouve rien qui marche)

Merci aux bonnes Ames
 

thebenoit59

XLDnaute Accro
Re : VAB Formats de 2 champs, l'un en majuscules et l'autre 1ere lettre en maj

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("C11:D250")) Is Nothing Then 
If Target.Column = 3 Then 
Target.Value = UCase(Target.Value)
Else: Target.Value = Application.Proper(Target.Value)
End If
End If
End Sub

A tester.
 

patouman

XLDnaute Occasionnel
Re : VAB Formats de 2 champs, l'un en majuscules et l'autre 1ere lettre en maj

Bonjour, après plusieurs tests je me suis aperçu qu'il y avait un problème pour l'exploitation de cette macro.
celle ci fonctionne parfaitement lorsqu'on saisit les noms et prénoms à la suite et un par un, MAIS...
ne fonctionne plus lorsqu'on copie/colle à partir d'une liste existante (sur la feuille 1 par ex, je vais avoir des listes de centaines de noms) ci joint le fichier

merci pour votre précieuse aide
 

Pièces jointes

  • Suivi visites médicales 1.xlsm
    40.4 KB · Affichages: 26

thebenoit59

XLDnaute Accro
Re : VAB Formats de 2 champs, l'un en majuscules et l'autre 1ere lettre en maj

Bonjour Patouman.
Il est logique que ça ne fonctionne pas avec une procédure événementielle.
Il faudrait passer sur une procédure classique que tu lances toi même.
Par exemple :

Code:
Sub Majuscule()
Dim i As Long
    For i = 11 To 655536
    If Cells(i, 3) = "" Then
    Exit For
    Else:
    Cells(i, 3).Value = UCase(Cells(i, 3).Value): Cells(i, 4).Value = Application.Proper(Cells(i, 4).Value)
    End If
    Next i
End Sub

A activer par un bouton ou un raccourci à toi de voir.
 

Modeste geedee

XLDnaute Barbatruc
Re : VAB Formats de 2 champs, l'un en majuscules et l'autre 1ere lettre en maj

Bonsour®
peut-êre comme ceci :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("C11:D250")) Is Nothing Then
        Application.EnableEvents = False
        Application.ScreenUpdating = False
        Dim Nom As Range, MaxLigne As Long
            MaxLigne = [C65535].End(xlUp).Row
        For Each Nom In Range("C11:c" & MaxLigne)
                Nom = UCase(Nom): Nom.Offset(0, 1) = Application.Proper(Nom.Offset(0, 1))
        Next
        Application.EnableEvents = True
        Application.ScreenUpdating = True
End If
End Sub