Modifier une partie de cette macro...

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
 

Christian0258

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

Christian0258

XLDnaute Accro
Re, bonjour à tout le forum,

Alors, personne pour mon problème...lol
J'ai bien essayé, mais je n'y arrive pas.

Merci à vous, bien amicalement.
Christian
 

Dranreb

XLDnaute Barbatruc
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:

Christian0258

XLDnaute Accro
Re, bonjour à tout le forum,

Merci, Dranreb, pour tes conseils et explications je vais travailler là-dessus.

Bien à toi,
Christian
 

Discussions similaires


Haut Bas