Adapter la formule Countif

Sofhy

XLDnaute Occasionnel
Re bonsoir le forum,

Encore bloquer sur la construction de mon fichier. Je cherche, je trifouille, je tente des choses ... mais les Dieux Vba sont contre moi !!!

Alors, j'ai utilisé l'enregistreur pour avoir ma formule countif :

Code:
ActiveCell.FormulaR1C1 = "=COUNTIF(R[-25]C[-1]:R[-3]C[-1],RC[-1])"

ActiveCell.FormulaR1C1 : ca c'est parfait, parce que ma dernière action m'amène dessus.

R[-25]C[-1]:R[-3]C[-1] : aie, les problèmes commencent ! Ma plage commencera toujours en C3, par contre, jusqu'à la fin du tableau, qui lui est variable.

RC[-1] : Je pense que ça, c'est bon. J'ai besoin que le critère soit la cellule juste à gauche.

Donc, j'ai tenté un truc de ce genre, en adaptant des morceaux de codes :

Code:
ActiveCell.FormulaR1C1 = "=COUNTIF(Range("C3").End(xlDown).Row,ActiveCell.Offset(0, -1).Select)"

ou encore :
Code:
ActiveCell.FormulaR1C1 = "=COUNTIF(Range("C3").End(xlDown).Row,,RC[-1])"

... Mais ça ne fonctionne pas.
 

Sofhy

XLDnaute Occasionnel
Re : Adapter la formule Countif

Hi everybody,

Je me fais une réponse toute seule :D

Entre temps, je continue à trifouiller.
En c'est le R-25 qui pose problème et non le R-3, car ce dernier sera toujours vrai, car trois cellules au dessus.

Bon cela dit, est-ce que ça fait avancer le shimilibilique ?
 

antha

XLDnaute Occasionnel
Re : Adapter la formule Countif

Bonsoir,
En fait tu mélanges une syntaxe de formule et du VBA.

Cela donnerait (à adapter parce que je n'ai pas compris la structure exacte de ton tableau, mais cela fonctionnera toujours avec les " & [xx].end(xlup).row & " )
ActiveCell.FormulaR1C1 = "=COUNTIF(R[" & [C65000].end(xlup).row & "]C[-1]:R[-3]C[-1],RC[-1])"

Lors de la 1ère " & que tu insères, tu 'sors' de la formule que tu veux inscrire pour spécifier du code VBA. Tu y retournes via le & "
 

Sofhy

XLDnaute Occasionnel
Re : Adapter la formule Countif

Bonjour Antha, le fil,

Alors, je vois où est mon erreur dans la syntaxe.
J'ai donc adapté ton code à mon tableau, mais là, encore un petit problème.

J'ai joint un tableau en exemple.
Dans la Sub test, j'ai le code qui me permet de sélectionner la première cellule de la colonne. Ça fonctionne.
Dès que je le place dans le countif, j'ai une erreur. si je remplace le .select par .row, pas d'erreur mais la cellule sélectionnée n'est pas la bonne.

Désolée, je pense que je vais polluer le forum avec plusieurs "petites" questions, mais plutôt que d'envoyer un fichier brut avec l'explication de ce que je veux obtenir à la fin, j'essaye de faire un maximum de code par moi même, afin d'apprendre ... Mais sur ces questions de point de détail, j'ai du mal à trouver des réponses dans les anciens posts.

Encore merci à tous,
Sofhy
 

Pièces jointes

  • Pb_Code2.xls
    37.5 KB · Affichages: 116

laetitia90

XLDnaute Barbatruc
Re : Adapter la formule Countif

bonjour Sofhy antha le forum copy en colonne o & p... a adapter

Code:
Sub es()
   Dim c As Variant, d As Long, m As Object, x As Long
   Application.ScreenUpdating = False
    Set m = CreateObject("Scripting.Dictionary")
    For Each c In Range("c4", Cells(Rows.Count, "c").End(xlUp))
    m(c.Value) = IIf(m.Exists(c.Value), m(c.Value) + 1, 1)
   Next c
   [o2].Resize(m.Count, 1) = Application.Transpose(m.keys)
   For c = 2 To Cells(Rows.Count, 15).End(xlUp).Row
   For d = 4 To Cells(Rows.Count, 3).End(xlUp).Row
   If Cells(c, 15) = Cells(d, 3) Then x = x + Cells(d, 2)
   Next d: Cells(c, 16) = x: x = 0: Next c
End Sub

autrement tu peus utilser sommeprod plus simple
 
Dernière édition:

Sofhy

XLDnaute Occasionnel
Re : Adapter la formule Countif

Bonsoir,

Merci laetitia90.

Par contre, je cherche, si c'est possible, quelque chose de plus simple, qui me rapporte la coordonnée de la cellule par rapport à l'emplacement de la cellule actuelle.
Car en fait, j'ai besoin également de ça pour une autre formule de somme : A1:19. Donc toujours le même pb A19 c'est la cellule y position au de ma cellule actuelle, donc ok. Par contre A1 est potentiellement R-X. et comme mon tableau est variable, le X change tout le temps.

Par contre, s'il existe une possibilité avec une formule sommeProd, je prends. Mais je pense que le problème sera identique ?

Merci par avance.
Sofhy
 

Fo_rum

XLDnaute Accro
Re : Adapter la formule Countif

Salut

peut-être ainsi avec ta procédure
Code:
...
ActiveCell.FormulaR1C1 = "=COUNTIF(R4C[-1]:R" & DerVendeur & "C[-1],RC[-1])"
Range("D" & DerVendeur + 3).Select
    Selection.AutoFill Destination:=Range("D29:D35"), Type:=xlFillDefault
...
 

Sofhy

XLDnaute Occasionnel
Re : Adapter la formule Countif

Bonsoir le forum et merci à Antha, Laetitia90 et Fo_rum,

Fo_rum,
J'ai essayé ton script, mais en fait, il ne rapporte pas le -X de R, et la sélection n'est pas correcte.

Mais la solution m'est venue dans la nuit !
Voici le code que j'ai écrit, et qui a fonctionné, je voulais donc vous le faire partager :

Code:
Sub Somme()
'X représente la première cellule pour le calcul de la somme
Dim X As String
'Fomule représente la formule standard type somme =(A1:A4)
Dim formule As Variant
Sheets("Résultat").Select
'inscrire "Total" à la fin de la colonne "D" du tableau
Range("D2").End(xlDown).Offset(1, 0).Select
ActiveCell.FormulaR1C1 = "Total"
ActiveCell.Font.Bold = True
'On cherche les coordonnées de X
Range("E2").End(xlDown).Select
X = Selection.Address
'On utilise les SendKeys pour renvoyer la fomule standard "=somme(X:Y)
Range("E2").End(xlDown).Offset(1, 0).Select
'ActiveCell.Font.Bold = True
formule = "=somme{(}$E$2:" & X & "{)}"
Application.SendKeys formule + "{enter}"
ActiveCell.Select

Ce n'ai pas sur le tableau que j'ai envoyé mais le principe est de faire le total à la fin de la colonne D, avec un nombre de lignes variable.

Wahoo, je viens de passer de débutante à débutante + :D

Bonne soirée à tous,
Sofhy
 

Discussions similaires

Statistiques des forums

Discussions
312 299
Messages
2 086 996
Membres
103 423
dernier inscrit
Guyom GIL