Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

tri automatique

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 !

picronte

XLDnaute Occasionnel
bonsoir
sur le fichier j'aimerai qu'il me tri automatiquement dans l'onglet feuil le resultat de l'onglet base de ad à bd par rapport à ah
je joint le fichier pour mieux comprendre
merci
 
Re : tri automatique

Re,

Bon maintenant c'est clair : il faut renseigner 22 colonnes à droite du filtre.

Pas besoin d'ajouter des données en feuille BASE :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [B1]) Is Nothing Then Exit Sub
Range("A2:Z" & Rows.Count).ClearContents 'RAZ
If [B1] = "" Then Exit Sub
Dim lig&, cel As Range, col%
Application.ScreenUpdating = False
With Feuil1 'CodeName
  .AutoFilterMode = False
  With .Range("AH7", .Cells(.Rows.Count, "AH").End(xlUp))
    .AutoFilter 1, IIf([B1] = "Tous", "*", [B1]) 'filtre automatique
    .Offset(, -2).Resize(, 4).SpecialCells(xlCellTypeVisible).Copy [A2]
    .Offset(, -4).Resize(, 2).SpecialCells(xlCellTypeVisible).Copy [C2]
    lig = 2
    For Each cel In .SpecialCells(xlCellTypeVisible)
      For col = 3 To 24
        If LCase(.Parent.Cells(cel.Row, col)) = "o" Then _
          Cells(lig, col + 2) = .Parent.Cells(5, col)
      Next
      lig = lig + 1
    Next
  End With
  .AutoFilterMode = False
End With
End Sub
Nota : j'ai ajouté "*" comme critère du filtre pour "Tous".

Fichier (2).

A+
 

Pièces jointes

Re : tri automatique

re,job75
grace à vous et a mon entêtement je reussi à faire un bout de chemin.
il reste à mettre en premier en ligne A2 dans l'onglet feuil, quand la colonne E est renseigné puis f,g,h,i; et ainsi de suite.
Picronte
 

Pièces jointes

Re : tri automatique

Re,

Le filtre que vous utilisez nécessite des formules dans les 22 colonnes AH:BC de la feuille BASE, libre à vous.

Maintenant pour trier le filtre :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [D1]) Is Nothing Then Exit Sub
If [D1] = "" Then Exit Sub
Dim n&
With Feuil1 'CodeName
  .AutoFilterMode = False
  With .Range("BD7", .Cells(.Rows.Count, "BD").End(xlUp))
    .AutoFilter 1, [D1] 'filtre automatique
    .Offset(, -26).Resize(, 26).SpecialCells(xlCellTypeVisible).Copy [A2]
    n = .SpecialCells(xlCellTypeVisible).Count
  End With
  .AutoFilterMode = False
End With
'---tri du filtre---
[AA2].Resize(n).FormulaR1C1 = "=MATCH(""?*"",RC5:RC26,0)"
[A2:AA2].Resize(n).Sort [AA2], xlAscending, Header:=xlYes
[AA:AA].ClearContents
Range([A2:Z2].Offset(n), Cells(Rows.Count, 1)).ClearContents
End Sub
La macro entre en colonne AA une formule qui permet le tri.

A+
 
Re : tri automatique

Bonsoir job75,
Après plusieurs heures passées sur le fil, j'ai fini par trouver les aides que j'attendais.
je tiens personnellement a vous remerciez pour votre patience.
le fichier fonctionne très bien, je ne sais pas comment j'aurai pu faire sans vous.
je le met en pièce jointe pour celui à qui ça intéresse.
je suis intéressé par excel, pouvez-vous m'indiquer un cd ou un livre qui expliquer les codes.
Merci
Picronte
 

Pièces jointes

Re : tri automatique

Bonjour picronte,

Vous vous rendrez peut-être compte que dans certains cas les formules de BASE!AH:BC sont copiées en filtrant :

- si l'on introduit "Tous" dans la liste de validation en D1

- si la plage filtrée par BASE!BD8 est unique (jointive).

Il vaut donc mieux faire un Collage spécial-Valeurs :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [D1]) Is Nothing Then Exit Sub
If [D1] <> "" Then
  Dim n&
  With Feuil1 'CodeName
    Application.ScreenUpdating = False
    .AutoFilterMode = False
    With .Range("BD7", .Cells(.Rows.Count, "BD").End(xlUp))
      .AutoFilter 1, IIf([D1] = "Tous", "*", [D1]) 'filtre automatique
      .Offset(, -26).Resize(, 26).SpecialCells(xlCellTypeVisible).Copy
      [A2].PasteSpecial xlPasteValues
      n = .SpecialCells(xlCellTypeVisible).Count
    End With
    .AutoFilterMode = False
  End With
  '---tri du filtre---
  [AA2].Resize(n).FormulaR1C1 = "=MATCH(""?*"",RC5:RC26,0)"
  [A2:AA2].Resize(n).Sort [AA2], xlAscending, Header:=xlYes
  [AA:AA].ClearContents
  Target.Select
End If
Range([A2:Z2].Offset(n), Cells(Rows.Count, 1)).ClearContents
End Sub
Fichier joint.

A+
 

Pièces jointes

- 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

  • Question Question
Microsoft 365 Aide planning
Réponses
17
Affichages
630
Réponses
5
Affichages
306
Réponses
5
Affichages
306
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…