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 'dernire 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 dernire 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 dernire 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
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 'dernire 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
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,
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
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