• Initiateur de la discussion Initiateur de la discussion JCC44
  • Date de début Date de début

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 !

JCC44

XLDnaute Nouveau
Bjr

Dans 1 feuille excel j'ai 3 tableaux ce synthèse de 3 colonnes et 20 lignes chacun que je souhaite voir se trier automatiquement, sur colonne 1 puis en cas d'égalité sur colonne 2, avec mise à jour automatique lors de l'ajout de données dans un autre tableau de la même feuille.

je pense qu'il me manque une "liaison" entre les pavés pour éviter le mélange....

Si qqu'un a une solution d'avance merci.

j'ai commencé à créer ce code mais si le 1er pavé fonctionne bien tout seul, l'ajout des 2 autres fait que plus rien ne fonctionne :

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Union([E2], [P29], Range("E2😛29"))) Is Nothing Then Exit Sub
Range("R2:S22").Select
Selection.Sort Key1:=Range("R2"), Order1:=xlAscending, Header:=xlGuess, _
Key2:=Range("S2"), Order2:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal


If Intersect(Target, Union([E33], [P60], Range("E33😛60"))) Is Nothing Then Exit Sub
Range("V2:X22").Select
Selection.Sort Key1:=Range("V2"), Order1:=xlAscending, Header:=xlGuess, _
Key2:=Range("W2"), Order2:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal

If Intersect(Target, Union([A62], [B80], Range("A62:B80"))) Is Nothing Then Exit Sub
Range("Z2:AB22").Select
Selection.Sort Key1:=Range("Z2"), Order1:=xlAscending, Header:=xlGuess, _
Key2:=Range("AA2"), Order2:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal

End Sub
 

Pièces jointes

Dernière édition:
Re : code vba - erreur

Bonjour JCC44.


Peut-être un petit problème de logique ?
Avec cette structure :
Code:
If Condition1 Then Exit Sub
'Code1
If Condition2 Then Exit Sub
'Code2
...
Si Condition1 renvoie VRAI, Condition2 n'est pas testée.


Ne vaudrait-il pas mieux cela ?
Code:
If Not Condition1 Then
'Code1
ElseIf Not Condition2 Then
'Code2
End If
...


À essayer :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)

  If Not Intersect(Target, Union([E2], [P29], Range("E2:P29"))) Is Nothing Then
    Range("R2:S22").Select
    Selection.Sort Key1:=Range("R2"), Order1:=xlAscending, Header:=xlGuess, _
    Key2:=Range("S2"), Order2:=xlAscending, Header:=xlGuess, _
    OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
    DataOption1:=xlSortNormal

  ElseIf Not Intersect(Target, Union([E33], [P60], Range("E33:P60"))) Is Nothing Then
    Range("V2:X22").Select
    Selection.Sort Key1:=Range("V2"), Order1:=xlAscending, Header:=xlGuess, _
    Key2:=Range("W2"), Order2:=xlAscending, Header:=xlGuess, _
    OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
    DataOption1:=xlSortNormal

  ElseIf Not Intersect(Target, Union([A62], [B80], Range("A62:B80"))) Is Nothing Then
    Range("Z2:AB22").Select
    Selection.Sort Key1:=Range("Z2"), Order1:=xlAscending, Header:=xlGuess, _
    Key2:=Range("AA2"), Order2:=xlAscending, Header:=xlGuess, _
    OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
    DataOption1:=xlSortNormal
  End If

End Sub

Bonne journée.


ℝOGER2327
#7787


Vendredi 6 Pédale 142 (Vers Belges - fête Suprême Quarte)
10 Ventôse An CCXXIII, 0,7220h - bêche
2015-W09-6T01:43:58Z
 
- 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
17
Affichages
939
Réponses
6
Affichages
957
Réponses
2
Affichages
736
Réponses
11
Affichages
735
Retour