Insertion de formule selon cellules remplies ou pas

Arnaud dit Citro

XLDnaute Junior
Bonjour à tous,

A la suite du remplissage d'un formulaire, je souhaiterais qu'à partir de la colonne Y il soit insérer un certain nombre de formule. Mais à la suite de Y cela a une fin, et cette fin est variable (cela peut être AF ou AJ ou plus encore).

J'ai donc commencé un petit code :
VB:
Dim test, cell


With Sheets("Devis")
        test = Application.Max(.Cells(7, Columns.Count).End(xlToLeft).Column, 24) + 1
                
        For Each cell In Sheets("Devis").Cells(7, test)
            If test <> "" Then
                .Cells(Fdev, test - 4).FormulaR1C1 = "=SUMPRODUCT((RC13=BdD_Vendeur!R4C1:R999C1)*(RC13=R7C)*(RC13<>"""")*1)"
                .Cells(Fdev, test - 3).FormulaR1C1 = "=IF(AND(R7C[-1]=RC13,RC18=""Accepté""),1,0)"
                .Cells(Fdev, test - 2).FormulaR1C1 = "=IF(AND(R7C[-2]=RC13,RC18=""Reporté""),1,0)"
                .Cells(Fdev, test - 1).FormulaR1C1 = "=IF(AND(R7C[-3]=RC13,RC18=""Refusé""),1,0)"
            Else
                .Cells(Fdev, test) = ""
            End If
        Next cell
End With

J'ai choisi volontairement de partir de la fin pour éviter que cela passe en revue toutes les colonnes. Cela fonctionne bien pour les 4 colonnes précédant la 1ère vide mais cela ne remonte pas jusqu'à Y et du coup je suis un peu perdu...

Si quelqu'un a une petite idée pour me dépanner, je suis preneur

Arnaud
 

Pièces jointes

  • test.xlsm
    25.8 KB · Affichages: 4

job75

XLDnaute Barbatruc
Bonjour Arnaud dit Citro,
VB:
Dim lig&, col%
lig = 7
With Sheets("Devis")
    For col = 25 To .Columns.Count Step 4
        If .Cells(lig, col) = "" Then Exit For
        .Cells(lig + 1, col).FormulaR1C1 = "=SUMPRODUCT((RC13=BdD_Vendeur!R4C1:R999C1)*(RC13=R7C)*(RC13<>"""")*1)"
        .Cells(lig + 1, col + 1).FormulaR1C1 = "=IF(AND(R7C[-1]=RC13,RC18=""Accepté""),1,0)"
        .Cells(lig + 1, col + 2).FormulaR1C1 = "=IF(AND(R7C[-2]=RC13,RC18=""Reporté""),1,0)"
        .Cells(lig + 1, col + 3).FormulaR1C1 = "=IF(AND(R7C[-3]=RC13,RC18=""Refusé""),1,0)"
    Next col
End With
A+
 

Arnaud dit Citro

XLDnaute Junior
Bonjour Job75,

Merci de ta réponse, malheureusement cela ne fonctionne pas.
La cellule de référence est Y7 et tu as bien compris : cela avance de 4 en 4 (AC7 puis AG7 et ainsi de suite). Le code me paraît bien construit pourtant (mais bon il est vrai que je n'y connais pas grand chose).

Arnaud
 

Membres actuellement en ligne

Statistiques des forums

Discussions
312 084
Messages
2 085 194
Membres
102 814
dernier inscrit
JLGalley