Problème de cohabitation de 2 parties de codes VBA

Bonjour le forum,

Voici mon problème, j'ai 2 codes VBA qui marchent tous les 2 indépendamment, mais qui lorsque qu'ils sont ensembles crées des problèmes dans mon fichier Excel.

Mon premier code me permettait de mettre une majuscule en début de mot dans ma feuille, et j'y ai rajouté un code permettant d'insérer un champ recherche dans cette même feuille. Les 2 testés seul font ce qu'on leur demande, malheureusement ensemble ils "déconnent". Le problème rencontré est le suivant : La première lettre de chaque mot est remplacée par un chiffre ou un caractère du style ", & .... Bizarre non ?

Je ne suis pas assez fort en VBA pour trouver une solution, je compte donc sur vous SVP, ou une autre solution.

Merci.

Voici mon code :

Option Compare Text

Private Sub TextBox1_Change()

    Application.ScreenUpdating = False

    Range("A6:A400").Interior.ColorIndex = 2

    If TextBox1 <> "" Then
        For ligne = 6 To 400
            If Cells(ligne, 1) Like "*" & TextBox1 & "*" Then
                Cells(ligne, 1).Interior.ColorIndex = 43

            End If
        Next
    End If
    End Sub

'Majuscule en début de mot

Private Sub Worksheet_Change(ByVal Target As Range)

    If Target.Value >= "a" And Target.Value <= "z" Then
        Target.Value = Chr(-32 + Asc(Left$(Target.Value, 1))) & Right$(Target.Value, Len(Target.Value) - 1)
    End If

End Sub

Bonjour,

Essaie après avoir modifié la procédure Worksheet_Change comme cela

Private Sub Worksheet_Change(ByVal Target As Range)
    Application.EnableEvents = False
    If Asc(Left$(Target.Value, 1)) >= 97 And Asc(Left$(Target.Value, 1)) <= 122 Then
        Target.Value = Chr(-32 + Asc(Left$(Target.Value, 1))) & Right$(Target.Value, Len(Target.Value) - 1)
    End If
    Application.EnableEvents = True
End Sub

A+

Merci.

Je viens de tester et apparemment ça fonctionne, bien que je n'ai pas tout compris dans le changement du code.

J'ai bien compris ça" Application.EnableEvents" mais pour les autres modifs... surtout cette ligne "If Asc(Left$(Target.Value, 1)) >= 97 And Asc(Left$(Target.Value, 1)) <= 122 Then " c'est quoi le 97 et 122 ?

En tout cas merci.

Jimmy

Bonjour, Bonjour Frangy,

En complément de ton code, la gestion d'erreur pour réiniatiliser EnableEvents si plantage macro...

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)

    On Error GoTo gestion_erreur

        Application.EnableEvents = False
        If Asc(Left$(Target.Value, 1)) >= 97 And Asc(Left$(Target.Value, 1)) <= 122 Then
        Target.Value = Chr(-32 + Asc(Left$(Target.Value, 1))) & Right$(Target.Value, Len(Target.Value) - 1)
        End If
        Application.EnableEvents = True

gestion_erreur:
Application.EnableEvents = True

End Sub

Merci Jean-Eric,

J'avais justement rencontré ce problème lors de tests. Après ça ne me mettait plus de majuscule.

Merci à vous 2

Jimmy


Si je laisse Option Explicit mon code pour le champ recherche renvoie une erreur.

Jean-Eric a écrit :

Bonjour, Bonjour Frangy,

En complément de ton code, la gestion d'erreur pour réiniatiliser EnableEvents si plantage macro...

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)

    On Error GoTo gestion_erreur

        Application.EnableEvents = False
        If Asc(Left$(Target.Value, 1)) >= 97 And Asc(Left$(Target.Value, 1)) <= 122 Then
        Target.Value = Chr(-32 + Asc(Left$(Target.Value, 1))) & Right$(Target.Value, Len(Target.Value) - 1)
        End If
        Application.EnableEvents = True

gestion_erreur:
Application.EnableEvents = True

End Sub

Re-bonjour,

c'est quoi le 97 et 122 ?

Ton code a pour objectif de mettre une majuscule en début de mot.

Pour cela, le code doit vérifier tout d’abord que cette première lettre est une minuscule.

Or, dans la table ASCII, les caractères minuscules (a-z) sont numérotés de 97 à 122, ce qui justifie la ligne de code.

"If Asc(Left$(Target.Value, 1)) >= 97 And Asc(Left$(Target.Value, 1)) <= 122 Then "

Pour obtenir l’équivalent en majuscule il suffit alors de sélectionner le caractère ayant le numéro du caractère minuscule auquel on soustrait 32.

Exemple :

le caractère "a " occupe la position 97 ; le caractère "A " occupe la position 97-32 = 65.

le caractère "p " occupe la position 112 ; le caractère "P " occupe la position 112-32 = 80.

A+

Merci pour ces explications.

frangy a écrit :

Re-bonjour,

c'est quoi le 97 et 122 ?

Ton code a pour objectif de mettre une majuscule en début de mot.

Pour cela, le code doit vérifier tout d’abord que cette première lettre est une minuscule.

Or, dans la table ASCII, les caractères minuscules (a-z) sont numérotés de 97 à 122, ce qui justifie la ligne de code.

"If Asc(Left$(Target.Value, 1)) >= 97 And Asc(Left$(Target.Value, 1)) <= 122 Then "

Pour obtenir l’équivalent en majuscule il suffit alors de sélectionner le caractère ayant le numéro du caractère minuscule auquel on soustrait 32.

Exemple :

le caractère "a " occupe la position 97 ; le caractère "A " occupe la position 97-32 = 65.

le caractère "p " occupe la position 112 ; le caractère "P " occupe la position 112-32 = 80.

A+

Rechercher des sujets similaires à "probleme cohabitation parties codes vba"