joindre 2 codes --> problème de nom

Pasqi

XLDnaute Junior
Bonjour,

Qqn du forum m'a gentiment créé un code que j'ai essayé de mettre dans mon fichier contenant lui aussi déja des codes.
Et la, il me signale un problème de nom

Voici le code existant :
Code:
Private Sub Worksheet_Change(ByVal Target As Range) 
   With Target 
      If .Count > 1 Then Exit Sub 
      If .Value = Empty Then Exit Sub 
      If .Row < 4 Then Exit Sub 
      
      'exemple pour les colonne 
      'à partir de la ligne 5 
      'on peut ajouter autant de conditions qu'on veut en ajoutant 
      'Or .Column = ... 
      'supprimer éventuelement Or .column = ...conserver Then 
      If .Column = 3 Or .Column = 7 Or .Column = 8 Or .Column = 10 Or .Column = 11 Or .Column = 12 Then 
         .Value = UCase(.Value) 'on met en majuscule"NOM" col 2 
      ElseIf .Column = 4 Then 
         .Value = Application.Proper(.Value) 'on met en mixte"Prénom"col 1 
                  End If 
   End With 
End Sub

Et voici le nouveau code que je voudrais ajouter :

Code:
Private Sub Worksheet_Change(ByVal Target As Range) 
    Dim B As Boolean 
    If Target.Column = 3 Or Target.Column = 4 Then 
        B = verif.exe(Me.Cells(Target.Row, 3), Me.Cells(Target.Row, 4)) 
        If B = True Then 
            Me.Cells(Target.Row, 3) = "" 
            Me.Cells(Target.Row, 4) = "" 
        End If 
    End If 
End Sub


Les 2 codes ont ce nom identique : Private Sub Worksheet_Change(ByVal Target As Range).

Pouvez-vous me dire comment procéder svp ?

Grand merci d'avance.

Pasqi
 

mécano41

XLDnaute Accro
Re : joindre 2 codes --> problème de nom

Bonjour,

Si tu as mis ces deux codes dans le code d'une même feuille, sauf erreur de ma part, cela ne peut pas fonctionner car il ne peut y avoir qu'un seul événement Worksheet_Change par feuille.

Je n'ai pas regardé tes codes mais je suppose qu'il produisent des actions différentes ; il faut alors les mettre dans le même sub Worksheet_Change avec If Target = xxx then bla bla Elseif target =yyy Then Bli Bli par exemple pour lancer le code correspondant à la zone changée dans la feuille.

Cordialement
 
Dernière édition:
G

Guest

Guest
Re : joindre 2 codes --> problème de nom

Bonjour,

Avec ce que j'ai compris de tes macros. Pas pu tester évidement( pas de fichier ).

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
   With Target
      If .Count > 1 Or .Value = Empty Or .Row < 4 Then Exit Sub
      Application.EnableEvents = False
      On Error GoTo FinChange ' pour rétablir automatiquement la gestion des évènements stoppée par la ligne précédent
      Select Case .Column 'Suivant le numéro de colonne de la cellule
        Case 3 To 4 ' de 3 à 4
            If verif.exe(Me.Cells(Target.Row, 3), Me.Cells(Target.Row, 4)) Then
                Me.Cells(Target.Row, 3) = ""
                Me.Cells(Target.Row, 4) = ""
            Else
                .Value = UCase(.Value)
                'Si c'est la colonne 4
                If .Column = 4 Then .Value = Application.Proper(.Value)
            End If
        Case 8, 10 To 12 ' pour les colonnes 8 et 10 à 12
                .Value = UCase(.Value)
        End Select
FinChange:
        Application.EnableEvent = True
   End With
End Sub

A+
 

Gorfael

XLDnaute Barbatruc
Re : joindre 2 codes --> problème de nom

Salut Pasqi et le forum
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim B As Boolean
With Target
    If .Count > 1 Then Exit Sub
    If .Value = Empty Then Exit Sub
    If .Row < 4 Then Exit Sub
    Select Case .Column
        Case 3
            .Value = UCase(.Value) 'on met en majuscule"NOM" col 2
            B = verif.exe(Me.Cells(Target.Row, 3), Me.Cells(Target.Row, 4))
        Case 4
            .Value = Application.Proper(.Value) 'on met en mixte"Prénom"col 1
            B = verif.exe(Me.Cells(Target.Row, 3), Me.Cells(Target.Row, 4))
        Case 7, 8, 10, 11, 12
            .Value = UCase(.Value) 'on met en majuscule"NOM" col 2
    End Select
    If B = True Then
        Me.Cells(Target.Row, 3) = ""
        Me.Cells(Target.Row, 4) = ""
    End If
End With
End Sub
Mais... quand target appartient la colonne 3(euh C, pour moi), ton commentaire est : 'on met en majuscule"NOM" col 2, alors que tu donnes le code Target.Value=Ucase(Target.Value) => donc, si c'est la colonne C, tu mets la colonne C en Majuscule. Pour la B, ton code devrait être du style :
Code:
.offset(0,-1)=Ucase(.value)
Ou
Code:
Cells(Rows,"B")=Ucase(.Value)
Mettre un code qu'on ne maîtrise pas complètement, sans indiquer ce qu'il est censé faire ouvre la place à l'interprétation. Et la Loi de Murphy nous rappelle que ce n'est pas le mieux à faire.
A+
 

Statistiques des forums

Discussions
312 493
Messages
2 088 956
Membres
103 990
dernier inscrit
lamiadebz