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)
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
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
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.
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