CountIf ordre decroissant

Bonjour à tous,

J'espère que vous vous portez bien.

Je me permets de vous solliciter car j'aimerai enregistrer une macro CountIf qui parte de la dernière ligne où il y a du contenu, et faire un FillUp jusqu'à la 3ᵉ ligne de la feuille de calcul.

Je vous partage un fichier excel avec une macro qui fait cette action en FillDown avec la macro "Zlatan" dont vous trouverez le code ci-dessous. J'aimerais que la macro puisse le faire en FillUp à partir de la dernière ligne.

Sub ibra()
 Dim derlig As Long
 Dim sh As Worksheet

Application.ScreenUpdating = False

 For Each sh In ActiveWindow.SelectedSheets
  If sh.Name <> "Exemple" Then 'si le nom de la feuille selectionnŽe est diffŽrent de Exemple
    sh.Activate
   derlig = sh.Range("D" & Rows.Count).End(xlUp).Row 'dernire ligne utilisŽe de la colonne D

   sh.Columns("B:B").Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove 'insert une colonne ˆ gauche de la colonne B
   sh.Columns("C:C").Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove 'insert une colonne ˆ gauche de la colonne C

   sh.Range("B2") = "SŽrie H": sh.Range("B2").Interior.ColorIndex = 6 'titre et couleur colonne B
   sh.Range("C2") = "SŽrie A": sh.Range("C2").Interior.ColorIndex = 6 'titre et couleur colonne C

   sh.Range("B3").FormulaR1C1 = "=COUNTIF(R3C[3]:RC[4],RC[3])" 'ta formule en B3
   sh.Range("B3:B" & derlig).FillDown 'on tire la formule jusqu'ˆ la dernire ligne
   sh.Range("C3").FormulaR1C1 = "=COUNTIF(R3C[2]:RC[3],RC[3])" 'ta formule en C3
   sh.Range("C3:C" & derlig).FillDown 'on tire la formule jusqu'ˆ la dernire ligne
   sh.Columns("B:C").HorizontalAlignment = xlCenter 'centrer horizontalement sur colonnes B et C
  End If 'fin de la condition
 Next sh
End Sub

Je me montre à votre disposition si vous avez des questions. Je vous remercie par avance et passez un bon après-midi.

Laplacea

10test-flash-date.xlsm (277.97 Ko)

Bonjour,

Voici

Sub ibra()
  Dim derlig As Long
  Dim sh As Worksheet

  Application.ScreenUpdating = False
  For Each sh In ActiveWindow.SelectedSheets
    If sh.Name <> "Exemple" Then 'si le nom de la feuille selectionnŽe est diffŽrent de Exemple
      sh.Activate
      derlig = sh.Range("D" & Rows.Count).End(xlUp).Row 'dernire ligne utilisŽe de la colonne D

      sh.Columns("B:B").Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove 'insert une colonne ˆ gauche de la colonne B
      sh.Columns("C:C").Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove 'insert une colonne ˆ gauche de la colonne C

      sh.Range("B2") = "SŽrie H": sh.Range("B2").Interior.ColorIndex = 6 'titre et couleur colonne B
      sh.Range("C2") = "SŽrie A": sh.Range("C2").Interior.ColorIndex = 6 'titre et couleur colonne C

      sh.Range("B" & derlig).FormulaLocal = "=NB.SI(E$" & derlig & ":E" & derlig & ";E" & derlig & ")"
      sh.Range("B" & derlig & ":B3").FillUp
      sh.Range("C" & derlig).FormulaLocal = "=NB.SI(F$" & derlig & ":F" & derlig & ";F" & derlig & ")"
      sh.Range("C" & derlig & ":C3").FillUp

      sh.Columns("B:C").HorizontalAlignment = xlCenter 'centrer horizontalement sur colonnes B et C
    End If 'fin de la condition
  Next sh
  Application.ScreenUpdating = True
End Sub

A+

Hello BrunoM45,

Je te remercie pour ton rapide retour !

Par contre la macro ne fonctionne pas. Je joins de nouveau le fichier avec cette fois la macro que tu as proposé.

Sur ce classeur, dans la première feuille de calcul, on a bien la fonction CountIf mais qui le fait en FillDown. Alors que j'aimerai l'avoir en FillUp comme je l'ai expliqué dans le 1er message.

Je te remercie et vous remercie pour les autres de m'aider sur cette question.

Bon après-midi à tous !

Laplacea

Re,

Désolé, mais mon code fait bien du FillUp

sh.Range("B" & derlig & ":B3").FillUp

Il suffit de prendre une cellule B350 (par exemple) entrer en mode édition (F2)

Et on voit bien que ça part du bas

2020 05 12 14h25 21

Maintenant que le résultat escompté ne soit pas celui que tu veux il faudra rectifier ta demande

@+

Merci pour ton retour BrunoM45,

Quand j'utilise la macro, un onglet s'affiche :

"Erreur d'exécution 1004 :

Erreur définie par l'application ou par l'objet "

Quand je selectionne l'option Debogage, elle pointe sur la ligne :

--> sh.Range("B" & derlig).FormulaLocal = "=NB.SI(E$" & derlig & ":E" & derlig & ";E" & derlig & ")"

Et rien ne fonctionne comme ça à l'air de fonctionner sur ton fichier.

Qu'est-ce que je dois faire ?

Je te remercie par avance de ton retour et je te souhaite une bonne journée BrunoM45.

Laplacea

Re,

Je n'ai aucun souci, vérifie que tu n'es pas une référence manquante

Menu -> Outils - > Références

Si c'est le cas, décoche là et clique sur OK

@+

Salut Bruno,

Merci pour ton retour,

Qu'est-ce que je dois regarder et ou ? Je suis sur Excel 2016. Je n'ai pas trouvé ce que tu m'as proposé.

Bon après-midi à toi !

Laplacea

Re,

Dans VBAProject

2020 05 14 15h16 14

@+

Merci pour ton retour BrunoM45,

Je ne comprends pas, je viens de vérifier les references et je les ai bien. As-tu une idée d'une reference qui pourrait bloquer la macro ?

Je t'envoie ci-joint des captures de ce qui se passe lorsque j'active le code.

Je te remercie d'avance pour ton retour !

erreur vba

Re,

Et bien écoute la seule raison à mes yeux c'est que tu es sur un mac

Moi je n'ai qu'un PC et ça fonctionne

J'essaierais de voir sur le mac de ma petite femme ce soir

@+

Re Bruno,

J'utilise Excel sur Windows avec Bootcamp et ça ne fonctionne pas. J'ai également tenté sur Mac ça n'a pas marché.

Je te remercie d'avance !

Passes une bonne soirée.

Laplacea

Re,

Au fait, tu n'aurais pas un Excel en anglais par hasard

Bonsoir Bruno,

Mon excel est en français.

Passes une bonne soirée.

Laplacea

Bonjour,

Je suis vraiment désolé de te le dire, mais le problème est bien sur ton mac

Sur celui de ma petite femme iOS Catalina + Excel 2016 aucun problème la macro s'exécute bien

Je ne pourrais plus rien faire pour toi

Hello BrunoM45,

Merci pour ton retour et pour toute l'aide que tu m'as apporté ! C'est vraiment gentil de ta part.

Néanmoins ça ne me règle pas mon problème, et je ne sais plus trop quoi faire ^^'.

Si tu ou d'autres personnes dans le forum ont des propositions je suis prêt à les écouter ^^

Bon après-midi à tous !

Laplacea

BrunoM45,

Peux-tu m'envoyer l'excel avec la macro incluse stp ? Je tente le tout pour le tout ^^

Salut

Peux-tu m'envoyer l'excel avec la macro incluse stp ? Je tente le tout pour le tout ^^

Alors franchement si c'est ça...

Re BrunoM45,

Bah écoutes j'ai le plaisir de te dire qu'avec ton fichier ça marche ^^

Je te remercie beaucoup pour ta patience !!

Prends soin de toi.

Laplacea

Hello BrunoM45,

Est-ce que tu peux écrire la macro de telle sorte que je puisse l'utiliser sur tous les onglets de la feuille de calcul que j'aurai sélectionné avec la fonction Activate.Sheet. stp

J'aimerai utiliser cette même macro sur plus de 10 feuilles de calcul simultanément que j'aurai sélectionné au préalable.

Je te remercie par avance et je te souhaite un bon week-end.

Laplacea

Hello BrunoM45

J'espère que tu vas bien.

Excuse-moi pour le post précédent car j'ai vu que cela fonctionnait effectivement bien.

J'ai écrit ce code là qui fonctionne en Filldown, est ce que tu serais le retranscrire en Fillup en modifiant le moins possible le code. Ce code là fonctionne sur mon Excel sous Windows ^^

Sub test()
 Dim derlig As Long
 Dim sh As Worksheet

Application.ScreenUpdating = False

 For Each sh In ActiveWindow.SelectedSheets
  If sh.Name <> "Exemple" Then 'si le nom de la feuille selectionnée est différent de Exemple
    sh.activate
   derlig = sh.Range("D" & Rows.Count).End(xlUp).Row 'dernière ligne utilisée de la colonne D

   sh.Columns("B:B").Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove 'insert une colonne à gauche de la colonne B
   sh.Columns("C:C").Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove 'insert une colonne à gauche de la colonne C

   sh.Range("B2") = "Série H": sh.Range("B2").Interior.ColorIndex = 6 'titre et couleur colonne B
   sh.Range("C2") = "Série A": sh.Range("C2").Interior.ColorIndex = 6 'titre et couleur colonne C

   sh.Range("B3").FormulaR1C1 = "=COUNTIF(R3C[3]:RC[4],RC[3])" 'ta formule en B3
   sh.Range("B3:B" & derlig).FillDown 'on tire la formule jusqu'à la dernière ligne
   sh.Range("C3").FormulaR1C1 = "=COUNTIF(R3C[2]:RC[3],RC[3])" 'ta formule en C3
   sh.Range("C3:C" & derlig).FillDown 'on tire la formule jusqu'à la dernière ligne
   sh.Columns("B:C").HorizontalAlignment = xlCenter 'centrer horizontalement sur colonnes B et C
  End If 'fin de la condition
 Next sh
End Sub

Je te remercie par avance.

Bien à toi.

Laplacea

Rechercher des sujets similaires à "countif ordre decroissant"