Pb avec event SelectionChange

  • Initiateur de la discussion Xavier44
  • Date de début
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.
 
X

Xavier44 de Nantes

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

pat1545.

XLDnaute Accro
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
 
X

Xavier44

Guest
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
 
X

Xavier44 de Nantes

Guest
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

  • Bibliotheque.zip
    36.5 KB · Affichages: 32
  • Bibliotheque.zip
    36.5 KB · Affichages: 29
  • Bibliotheque.zip
    36.5 KB · Affichages: 19
X

Xavier

Guest
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
 

Membres actuellement en ligne

Statistiques des forums

Discussions
314 017
Messages
2 104 583
Membres
109 084
dernier inscrit
mizab