Pb avec event SelectionChange

  • Initiateur de la discussion Initiateur de la discussion Xavier44
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

X

Xavier44

Guest
Bonjour à tous et toutes
Débutant en VBA je remercie les intervants pour la qualité des réponses et tout particulièrement Thierry pour ses contribitions très didactiques. Elles m'ont bcp aidé.

J'ai une procedure de formatage de texte (saisie avec un pen scanner dans les cellules) qui ne se declenche pas lors du changement de cellule. Avec SelectionChange l'action à lieu sur la cellule d'arrivée. Comment faire pour appliquer mon formatage à la cellule venant d'être quittée ?

Merci pour votre aide.
 
Re bonsoir le Forum
Avec WorksheetChange c'est mieux. mais j'ai un Pb avec la Target et je tourne en rond avec ma procédure.

En colonne A et B je veux appliquer Nompropre, en colonne C Minuscule sauf la prmière lettre et les autres colonnes inchangées

Private Sub Worksheet_Change(ByVal Target As Range)
If ActiveCell.Column = 3 Then
'Première lettre en majuscule
Target = UCase(Left(Trim(Target.Text), 1)) & LCase(Mid(Target.Text, 2))
Else
If ActiveCell.Column < 3 Then
'suppression des espaces multiples
Target = WorksheetFunction.Proper(Trim(Target.Text))
End If
End If

Do Until InStr(1, Target, ' ') = 0
Target = WorksheetFunction.Substitute(Target.Text, ' ', ' ')
Loop
End Sub

Le pb est de déterminer la colonne sur laquelle le texte a changé.

Merci pour votre aide.
 
Salut,

moi je fais pas mieux

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target.Cells(1), Range('A1:C20')) Is Nothing Then
Dim Macell
On Error Resume Next
Macell = Target.Column
Select Case Macell
Case 3
'Première lettre en majuscule
Target = UCase(Left(Trim(Target.Value), 1)) & LCase(Mid(Target.Value, 2))
Case 2
Target = WorksheetFunction.Proper(Trim(Target.Value))
Case 1
Target = WorksheetFunction.Proper(Trim(Target.Value))
End Select
End If
End Sub

' mais quelle diff entre
WorksheetFunction.Proper(Trim(Target.Value))
et
UCase(Left(Trim(Target.Value), 1)) & LCase(Mid(Target.Value, 2))

Patrick
 
Bonjour Pat1545, Jumps et le forum

Un grand merci pour vos conseils, ma proc semble tourner correctement.

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target.Cells(1), Range('A1:T5000')) Is Nothing Then
Dim Macell
On Error Resume Next
If Target.Value = '' Then
Exit Sub
End If
Macell = Target.Column
Select Case Macell
Case 3
'Première lettre en majuscule
Target = UCase(Trim(Left((Target.Value), 1))) & LCase(Mid(Target.Value, 2))
Case 1, 2, 4, 10, 11, 18 To 20
Target = WorksheetFunction.Proper(Trim(Target.Value))
End Select
'Suppression des espaces en trop
Do Until InStr(1, Target, ' ') = 0
Target = WorksheetFunction.Substitute(Target.Value, ' ', ' ')
Loop
End If
End Sub

Le case 3 met tout en minuscule sauf la première lettre de la phrase.
L' autre passe en Nompropre une Maj sur Chaque mot

Qu'elle est la différence d'utilisation entre Target.Value et Traget.Texte ?

Bon WkEnd
 
José Jumps, merci pour tes commentaires qui s'adressent à un débutant. Cette applic de Biblio perso ( environ 2000 livres) est pour mon épouse et pour éviter les complications je l'ai voulue presse bouton.
Certaines données viennent d'un pen scanner qiu me rajoute des espaces d'ou le formatage.
Une optimisation du code serai très appréciable d'autant plus que la procédure de recherche dans la listeBox traine un peu.

Le fichier en pj.

A+ [file name=Bibliotheque.zip size=37397]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Bibliotheque.zip[/file]
 

Pièces jointes

Bonsoir José et le Forum

Merci José d'avoir pris le temps de regarder mon fichier. IL y a toutefois un pb avec la proc event change. Si on enlève 'On error next' il y a erreur d'éxécution sur l'instruction 'If Target.Value = '' then' lorsque je supprime plusieurs cellules alors que la suppression d'une cell est ok.
Je ne comprends pas le passage byval de la proc la target étant une ou plusieurs cells.

Avec l'espion je vois Target.value2 que faut-il utiliser Text,Value,Value2

Je suis un peu perdu, merci pour votre aide
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.
Retour