Trouver la première ligne différente après un tri puis retrier sur la zone réduite

  • Initiateur de la discussion Initiateur de la discussion neal
  • 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 !

neal

XLDnaute Junior
Bonjour,
voici les différentes étapes de la macro de mon fichier :

1. Tri personnalisé sur la colonne E : Fermé, En cours, Ouverte
2. Sélection de la zone des tâches fermés (donc des X premières lignes) : tri sur la colonne D (fin réelle) du plus vieux au plus récent.
3. Sélection du reste : tri sur la colonne C (dead line) du plus vieux au plus récent.
4. Sur toute la colonne F : s’il y a une ligne sur laquelle il n’y a pas de formule dans la cellule de la colonne F, alors insérer la même formule que les autres cellules de la colonne F
5. Sur toute la colonne F : Mêmes mises en forme conditionnelle sur toutes les cellules (tant qu’une ligne est renseignée)
6. Sur toute la colonne E : Mêmes mises en forme conditionnelle sur toutes les cellules (tant qu’une ligne est renseignée)

--> La macro se déclenche automatiquement lorsqu’il y a une modification dans une des colonnes suivantes : C, D et E.


La macro que j'ai créé (avec l'aide d'un membre de ce forum, avec mes bidouillages derrière) me renvoie l'erreur suivante :
Erreur d'exécution '1004' : Impossible de lire la propriété Sort de la classe Range.

Qu'est ce qui ne marche pas ??
Merci d'avance pour votre réponse
 

Pièces jointes

Re : Trouver la première ligne différente après un tri puis retrier sur la zone rédui

Toutes mes excuses, j'étais persuadé que ma réponse était parti ... Je précisais que j'allais ouvrir un nouveau post puisque ma demande a changé.
Je vous remercie sincèrement pour votre solution, mais le problème c'est que je suis obligé de passer uniquement par une macro automatique pour que les futurs utilisateurs ne puissent rien modifier.
 
Re : Trouver la première ligne différente après un tri puis retrier sur la zone rédui

Re,

la partie tri revue (à la mode excel 2003) qui a priori répond au souhait
Code:
    Rowfin = Range("C65536").End(xlUp).Row

    Range("A1:G" & Rowfin).Sort Key1:=Range("E2"), Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=6, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal
    NbFermé = WorksheetFunction.CountIf(Range("E:E"), "Fermé")
    
    Range("A1:G" & NbFermé + 1).Sort Key1:=Range("E2"), Order1:=xlAscending, Key2:=Range("D2") _
        , Order2:=xlDescending, Header:=xlGuess, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal, DataOption2:=xlSortNormal
        
    Range("A" & NbFermé + 2 & ":G" & Rowfin).Sort Key1:=Range("C6"), Order1:=xlDescending, Header:=xlGuess, _
         Orientation:=xlTopToBottom, DataOption1:=xlSortNormal

Bonne suite
 
Re : Trouver la première ligne différente après un tri puis retrier sur la zone rédui

Bonsoir à tous

neal
Apparemment tu as zappé mon message dans ton premier fil...
https://www.excel-downloads.com/threads/integration-de-formule-automatique-si-vide.225168/
Tu me diras ce n'était qu'un simple avis personnel, pas une solution, ou une proposition de code VBA.
Mais la courtoisie aurait voulu que tu te manifestes (au moins pour me saluer) 😉
 
Re : Trouver la première ligne différente après un tri puis retrier sur la zone rédui

Merci beaucoup Paf ! Je n'avais pas du tout pensé à compter le nombre de "Fermé" ! La Macro marche à merveille 🙂
Est ce que je peux me permettre d'abuser une dernière fois ?

  • Comment faire pour que quelque soit le nombre de lignes, les cellules des colonnes E et F aient toujours la mise en forme conditionnelle ?

  • Comment faire pour que quelque soit le nombre de lignes, les cellules de la colonne F aient toujours la formule ?

Merci d'avance !

PS : je te salue Staple1600 ! 🙂
 
Re : Trouver la première ligne différente après un tri puis retrier sur la zone rédui

Re bonjour

l'utilisation de liste (ou tableau) solutionnait simplement le problème.

pour les formules de la colonne F le code proposé dans l'autre discussion et utilisé dans le classeur joint au post #1 ne donne-t-il plus satisfaction ? ce code 'copie' formule et mise en forme.

[p.m. Range("F" & target.Row - 1).AutoFill Destination:=Range("F" & target.Row - 1 & ":F" & target.Row), Type:=xlFillDefault ]

sinon pour la mise en forme de la colonne E, essayer ce code adapté de l'enregistreur de macro
Code:
    With Range("E" & target.Row)
        .FormatConditions.Delete
        .FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, Formula1:="=""Fermé"""
        .FormatConditions(1).Interior.ColorIndex = 10
        .FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, Formula1:="=""Ouverte"""
        .FormatConditions(2).Interior.ColorIndex = 44
        .FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, Formula1:="=""En cours"""
        .FormatConditions(3).Interior.ColorIndex = 6
    End With

bonne suite
 
- 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
36
Affichages
3 K
Retour