Passer numéro de ligne en variable dans la formule ROWS

Bonjour,

Alors j'ai une formule que je dois developper dans une boucle. Comme ci-dessous.

Cells(i + firts_lignedutab, 4).FormulaR1C1 = _
  "=INDEX(plage_calcul_immat,INT((ROWS(R1:R[-28])-1)/COUNTA(plage_calcul_date))+1)&""_""&INDEX(plage_calcul_date,MOD(ROWS(R1:R[-28])-1,COUNTA(plage_calcul_date))+1)"

Mais le problème c'est que la ligne (ROWS(R1:R[-28]) est égale lorsque j'ecris la formule à la mano à LIGNES($1:1) pour la première ligne puis LIGNES($1:2) pour la deuxième ligne etc....

Mais le soucis c'est que la référence R[-28] fait référence à la variable firts_lignedutab.

Donc comment indiquer la ligne comme sur la formule à la main

i = 1 LIGNES($1:1)

i= 2 LIGNES($1:2)

Dans la formule vba ?

Merci d'avance pour votre regard éclairé

Bonne soirée.

bonjour

en imaginant que ta boucle i commence à 1

Cells(i + firts_lignedutab, 4).Formula = _
  "=INDEX(plage_calcul_immat,INT((ROWS(1:" & i & ")/COUNTA(plage_calcul_date))+1)&""_""&INDEX(plage_calcul_date,MOD(ROWS(1:" & i & "),COUNTA(plage_calcul_date))+1)"
 

Salut h2so4,

Merci pour ton retour,

J'ai testé la formule ce matin mais j'ai le message d'erreur "Erreur définie par l'application ou par l'objet 1004".

J'ai essayé en changeant les parenthèses sans succès. Du coup je peux pas te dire si le résultat est conforme à ce que j'attends.

Merci et bonne journée.

bonjour,

peux-tu mettre un fichier exemple où on peut reproduire l'erreur ?

Salut,

J'ai préparé un fichier exemple en PJ, j’espère être clair sur le principe. A dispo si y à des questions.

Merci

re-bonjour,

peux-tu aussi mettre un exemple de la formule attendue ?

Oui, en D27 tu as un exemple.

mais voila ce que ça donne pour la 1ére ligne:

INDEX($A$3:$A$24;ENT((LIGNES($1:1)-1)/NBVAL($D$2:$M$2))+1)&"_"&INDEX($D$2:$M$2;MOD(LIGNES($1:1)-1;NBVAL($D$2:$M$2))+1)

ok j'avais pas vu

voici le code modifié, n'oublie pas de définir la plage "plage_calcul_benne"

Sub copiage_formule()
    Dim DernLigne As Long, DernColonne As Integer
    Dim wsf As Worksheet

    Set wsf = Sheets("PLANNING")

    'dernière ligne colonne A
    DernLigne = wsf.Range("A" & Rows.Count).End(xlUp).Row
    'dernière colonne ligne 1
    DernColonne = wsf.Cells(2, Cells.Columns.Count).End(xlToLeft).Column
    col = Split(Columns(DernColonne).Address, ":")(0)

    firts_lignedutab = DernLigne + 2

    nbcopiage = (DernLigne - 2) * (DernColonne - 3)

    For i = 1 To nbcopiage 'j'ai un doute sur ceci, cela devrait être dernligne et non nbcopiage me semble-t-il

        Cells(i + firts_lignedutab, 4).Formula = _
        "=INDEX($A3:$A" & DernLigne & ",INT((ROWS($1:" & i & ")-1)/COUNTA(D2:" & col & "2))+1)&""_""&INDEX(D2:" & col & "2,MOD(ROWS($1:" & i & ")-1,COUNTA(D2:" & col & "2))+1)"

        Cells(i + firts_lignedutab, 5).Formula = _
        "=INDEX(plage_calcul_benne,INT((ROWS($1:" & i & ")-1)/COUNTA(D2:M2))+1,MOD(ROWS($1:" & i & ")-1,COUNTA(D2:M2))+1)"

    Next i

End Sub

Re-bonjour,

C'est nickel, ça fonctionne. Merci

Pour info For i = 1 To nbcopiage 'j'ai un doute sur ceci, cela devrait être dernligne et non nbcopiage me semble-t-il

Je dois combiner toutes les possibilités entre les code et les jour donc je fais une multiplication pour avoir toutes les combinaison.

En tout cas merci, je suis pas trop doué pour la transformation des formules. Faut que je le bosse 8) .

Bonne journée.

Rechercher des sujets similaires à "passer numero ligne variable formule rows"