Modification des formules à partir du contenu d'une cellule

Bonjour !

Je vais vous expliquer ce que je cherche aussi précisément que possible. Je ne peux partager le classeur car il est confidentiel, toutes mes excuses.

J'aimerais créer une macro qui réalise ces étapes :

- Venir chercher la valeur X d'une cellule (définie elle même par une formule)

- Dans la première ligne d'un tableau, coller la valeur X récupérée à la place de l'indice de ligne utilisé dans la formule de cette case.

Imaginons que la première ligne de mon tableau soit =A2+(A2/2) ; j'aimerais que la macro transforme la case en =AX+(AX/2)

- Faire cela dans les deux colonnes de ma première ligne

- Venir chercher la valeur Y d'une cellule (définie elle même par une formule)

- Étirer la formule de la première ligne de mon tableau jusqu'à la ligne Y de la feuille excel.

Voilà voilà, j'espère que c'est clair

Bien à vous

Bonjour,

ce serait plus clair avec un fichier anonymisé et simplifié (je comprends que tu ne puisses pas divulguer l'intégralité).

Bonjour,

Je reviens vers vous avec un fichier excel exemple.

Le but serait de faire une macro qui modifie sur la 3e feuille la formule de la cellule A3, en prenant la valeur de la G8 de Numeros_ligne -3 comme indice de ligne dans la formule.

Puis autofill jusqu'à la cellule dont l'indice de ligne est précisé dans la cellule G7 de Numeros_ligne.

J'ai jusqu'ici essayé cela mais j'ai une erreur, je connais mal la syntaxe pour ce genre de chose :

Sub TEST()
'
' TEST Macro
'

'
    ActiveCell.FormulaR1C1 = _
        "=Liste_Generale!R['Numeros ligne'!$G$8).value-3]C[1]&"" ""&Liste_Generale!R['Numeros ligne'!$G$8).value-3]C[2]"
    Range("A3").Select
    Selection.AutoFill Destination:=Range("A3:(A&range('Numeros ligne'!$G$7))")
    Range("A3:A16").Select
End Sub

Merci beaucoup !

3tests.xlsx (11.22 Ko)

Je te fais une toute autre proposition de fonctionnement, qui sera valable pour toutes les colonnes que tu reprendras, et basée sur un filtre avancé

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A2")) Is Nothing Then
    If Range("A2") = "" Then
        Range("A4").CurrentRegion.Offset(1, 0).ClearContents
    Else
        Sheets(1).Range("A1").CurrentRegion.AdvancedFilter Action:=xlFilterCopy, _
            CriteriaRange:=Range("C1:C2"), CopyToRange:=Range("A4").CurrentRegion.Resize(1), Unique:=False
    End If
End If
End Sub
2tests.xlsm (18.14 Ko)

Merci beaucoup pour ta réponse.

Je dois en revanche absolument mettre en forme les données récupérées dans la liste générale (1ere feuille), avec des concaténations et sauts de ligne, c'est pourquoi j'ai besoin d'une syntaxe qui fonctionnerait pour avoir dans la formule (de la dernière feuille) un indice de ligne variable. Et ce que ce soit dans une macro ou directement dans la formule.

Merci pour ton temps !

C'est bien compliqué surtout avec les calculs intermédiaires ...

La première solution consisterait à partir de l'extrait que j'ai proposé ci-dessus.

Sinon, pour coller strictement à ta demande

Sub test()
    Sheets("Listeformatee").Select
    Range("A1").CurrentRegion.Offset(2, 0).ClearContents
    Range("A3").FormulaR1C1 = _
        "=OFFSET(Liste_Generale!R1C1,'Numeros ligne'!R8C7+ROW()-4,1)&"" ""&OFFSET(Liste_Generale!R1C1,'Numeros ligne'!R8C7+ROW()-4,2)"
    Range("A3").AutoFill Destination:=Range("A3:A" & Sheets("Numeros ligne").Range("$G$7") + 2)
End Sub
1tests.xlsm (17.28 Ko)
Rechercher des sujets similaires à "modification formules partir contenu"