Condition manquante dans ma macro colonne B vide

chris6999

XLDnaute Impliqué
Bonjour le FORUM

J'ai essayé tant bien que mal de remplacer mes formules sommes PROD par une fonction matricielle et cela fonctionne plutôt bien.

Le but est d'appliquer la fonction sur toutes les lignes où la colonne A est non vide et ce jusqu'à la ligne 181.

Sub sommeprod()
Dim lig&
'partir de la ligne 10 si colonne A no vide
lig = Cells(10, "A").End(xlDown).Row

'applique le code à partir de la ligne 10 colonne D et répète 8 fois
With Range(Cells(10, "D"), Cells(lig, "D")).Resize(, 8)

'formule
.FormulaR1C1 = _
"=SUMPRODUCT('Données brutes agents'!R9C5:R40000C5*(RC1='Données brutes agents'!R9C8:R40000C8)*(R3C='Données brutes agents'!R9C2:R40000C2))"

'remplace formule par la valeur trouvée
'.Value = .Value
End With
End Sub

Mon problème:
Je souhaiterais que seules les lignes où B est non vide soit traitées.
J'aurais pu faire lig = Cells(10, "B").End(xlDown).Row mais voilà le code s'arrête dès qu'il trouve justement une ligne où la colonne B est vide.

Quequ'un saurait il comment résoudre ce problème
Merci d'avance
 

Pièces jointes

  • test sommeprod sur colonne B non vide.xls
    146.5 KB · Affichages: 25
  • test sommeprod sur colonne B non vide.xls
    146.5 KB · Affichages: 27
  • test sommeprod sur colonne B non vide.xls
    146.5 KB · Affichages: 27

Staple1600

XLDnaute Barbatruc
Re : Condition manquante dans ma macro colonne B vide

Bonjour à tous

Voir du côté de SpecialCells avec les paramètres xlCellTypeBlanks et/ou xlCellTypeConstants
Pour les détails voir dans l'aide de VBA (ALT+F11 puisla touche F1)
 
Dernière édition:

Chris401

XLDnaute Accro
Re : Condition manquante dans ma macro colonne B vide

Bonjour

Tu modifies la formule en débutant par =si($A9="";""; ...)

Code:
Sub sommeprod()
Dim lig&
'partir de la ligne 10 si colonne b no vide
lig = Cells(10, "A").End(xlDown).Row
'Action à réaliser dans la colonne H

With Range(Cells(10, "D"), Cells(lig, "D")).Resize(, 8)

'Efface les anciennes valeurs
.ClearContents

'formule
.FormulaR1C1 = _
        "=IF(RC[-2]="""","""",SUMPRODUCT('Données brutes agents'!R9C5:R40000C5*(RC1='Données brutes agents'!R9C8:R40000C8)*(R3C='Données brutes agents'!R9C2:R40000C2)))"
    Range("E10").Select 'Pourquoi cette sélection ?
    Range("D11").Select 'Pourquoi cette sélection ?
'remplace formule par la valeur trouvée
.Value = .Value
End With
End Sub

Par contre, SOMMEPROD sur 40 000 lignes ... Tu devrais nommer tes plages

Cordialement
Chris
 

Paf

XLDnaute Barbatruc
Re : Condition manquante dans ma macro colonne B vide

Bonjour à tous

comme le dit Chris401, plage nommée ou bien limiter la formule à la dernière ligne renseignée:

Code:
...
DerLig = Worksheets("Données brutes agents").Range("A" & Rows.Count).End(xlUp).Row

MaFormule = "=IF(R[0]C2<>"""",SUMPRODUCT('Données brutes agents'!R9C5:R" & DerLig & "C5*(RC1='Données brutes agents'!R9C8:R" & DerLig & "C8)*(R3C='Données brutes agents'!R9C2:R" & DerLig & "C2)),"""") "

.FormulaR1C1 = MaFormule
...

A+
 

chris6999

XLDnaute Impliqué
Re : Condition manquante dans ma macro colonne B vide

Bonjour Chris

C pas c.. çà et ça marche nickel ! J'avais peur que ça écrase les valeurs sur la ligne lorque B est non vide mais même pas!
Je te remercie beaucoup;

Passe un bon week-end
 

Staple1600

XLDnaute Barbatruc
Re : Condition manquante dans ma macro colonne B vide

Bonjour à tous

chris septmillemoinsun
Pas de discrimination ?
Et l'ami Paf, l'est pas discriminé, hein ;)
Tu ne lui as pas claqué la bise, il me semble, non ? ;)
 
Dernière édition:

chris6999

XLDnaute Impliqué
Re : Condition manquante dans ma macro colonne B vide

Bonsoir

Je n'ai en fait pas eu le temps de tout étudier car j'ai eu une coupure Internet chez moi (qui n'est pas réglée du reste..merci FREE!)
et j'attendais d'être au boulot pour tester toutes les propositions et faire mes devoirs de politesse.

J'espère que vous n'en prendrez pas ombrage car j'essaye toujours de saluer tous ceux qui prennent la peine de me répondre.

Je vous salue bien bas donc en espérant ne pas avoir heurté par mon manque de délicatesse.
Pas de là à claquer des bises Staple mais le coeur y est.

Encore toutes mes excuses.
 

Discussions similaires

Statistiques des forums

Discussions
312 429
Messages
2 088 350
Membres
103 823
dernier inscrit
ben talha redouane