Débogage excel

Résolu
bibouden -  
ccm81 Messages postés 11033 Statut Membre -
Bonjour,

dans mon fichier excel j'ai mis une macro evenementiel (clique droit sur l'onglet visualiser le code) pour pouvoir avoir la colonne 2 tout en majuscule ( lorsque l'on ecrit en miniscule)
la colonne 3 avec la premiere lettre en Majuscule et la 8 en majuscule ( voir ci dessous).

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 2 Then
Z = Target.Value
Target.Value = UCase(Left(Z, 100))
End If

If Target.Column = 3 Then
Z = Target.Value
Target.Value = UCase(Left(Z, 1)) & Right(Z, Len(Z) - 1)
End If

If Target.Column = 8 Then
Z = Target.Value
Target.Value = UCase(Left(Z, 100))
End If

End Sub

Cela marche mais si apres validation de la cellule je m'aperçis que je me suis trompé dans l'orthographe et que j'appuie sur suppr pour modifier la cellule le débogage excel se met en route et après les fonctions ne sont plus fonctionnelle pour tout le fichier je suis obliger de fermer le fichier et de le reouvrir pour que cela refonctionne.Ai je oublier quelque chose ou que dois je faire ?

C'est un fichier que je dois faire remplir à une personne et je crains que mon tel ne cesse de sonner suite à ce pb

Merci beaucou

2 réponses

  1. melanie1324 Messages postés 1561 Statut Membre 156
     
    Bonjour,

    Je pense qu'il faudrait rajouter ca :

    Private Sub Worksheet_Change(ByVal Target As Range)

    If target.value <> "" then

    If Target.Column = 2 Then
    Z = Target.Value
    Target.Value = UCase(Left(Z, 100))
    End If

    If Target.Column = 3 Then
    Z = Target.Value
    Target.Value = UCase(Left(Z, 1)) & Right(Z, Len(Z) - 1)
    End If

    If Target.Column = 8 Then
    Z = Target.Value
    Target.Value = UCase(Left(Z, 100))
    End If

    end if

    End Sub
    1
  2. ccm81 Messages postés 11033 Statut Membre 2 434
     
    bonjour
    en passant tu pourrais en profiter pour simplifier un peu le code

    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Z
    If Target.Value <> "" Then
      Z = Target.Value
      Select Case Target.Column
        Case 2: Target.Value = UCase(Z)
        Case 3: Target.Value = UCase(Left(Z, 1)) & Right(Z, Len(Z) - 1)
        Case 8: Target.Value = UCase(Z)
      End Select
    End If
    End Sub


    bonne suite
    0