Modifier une partie de cette macro...

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 !

Christian0258

XLDnaute Accro
Bonjour à tout le forum,

Je souhaiterais votre aide afin de modifier cette partie de la macro afin de faire référence à une zone et non à la colonne entière…

If Target.Column = 2 And Target.Count = 1 Then
zone souhaitée B17:B23

la macro:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 2 And Target.Count = 1 Then
If Target <> "" Then
If IsError(Application.Match(Target.Value, [ListePrest], 0)) Then
If MsgBox("On ajoute?", vbYesNo) = vbYes Then
[ListePrest].End(xlDown).Offset(1, 0) = Target.Value
Sheets("Prestations").[ListePrest].Sort key1:=Sheets("Prestations").Range("A2")
Else
Application.Undo
End If
End If
End If
End If
End Sub

Merci pour votre aide si précieuse,
Bien à vous,
Christian
 
Re, Bonjour, le forum, vgendron

Je reste sur ce fil, pour une autre question ;

comment faire cohabiter ces deux macros ? .

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("B17:B26 ")) Is Nothing Then
If Target <> "" Then
If IsError(Application.Match(Target.Value, [ListePrest], 0)) Then
[ListePrest].End(xlDown).Offset(1, 0) = Target.Value
Sheets("Prestations").[ListePrest].Sort key1:=Sheets("Prestations").Range("A2")
Else
Application.Undo
End If
End If
End If

If Not Intersect(Target, Range("B31:B40 ")) Is Nothing Then
If Target <> "" Then
If IsError(Application.Match(Target.Value, [ListeMat], 0)) Then
[ListeMat].End(xlDown).Offset(1, 0) = Target.Value
Sheets("Matériaux").[ListeMat].Sort key1:=Sheets("Matériaux").Range("A2")
Else
Application.Undo
End If
End If
End If
End Sub

Merci pour votre aide si précieuse.

Bien à vous,
Christian
 
Dernière édition:
Bonsoir.
Je ne vois qu'une macro dans votre code assez pénible à lire faute de balises Code=VB
Alors les deux morceaux devraient cohabiter, encore que personnellement j'éviterais de tester le second cas si le 1er a marché en mettant un ElseIf pour la seconde partie.
Vérifiez si tout ça ne modifie pas une cellule de la même feuille. Si c'est le cas Il faut un Application.EnableEvents = False à chaque changement pour que la procédure n'essaye pas de s'appeler indéfiniment de façon récursive. Préventivement je le mettrais avant les UnDo. À remettre True après.
 
Dernière édition:
- 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

Discussions similaires

Réponses
1
Affichages
350
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
523
Réponses
4
Affichages
252
Retour