Réutiliser un bout de formule dans une autre

Bonjour,

Dans ma problématique actuelle je cherche à réutiliser un bout de formule d'une cellule dans la formule d'une autre.

Je m'explique si en A1 la formule est =Somme(B2:B4)

j'aimerais extraire par exemple la liste B2:B4 de la première formule dans A2 du style A2 "=Prod(Liste .Extraite de A1)"

Est-ce possible ?

J'ai trouvé sur internet la possibilité d'extraire la formule d'une cellule avec une fonction perso en VBA, puis avec STWT y aurait moyen de récupérer la partie qui nous intéresse. Sauf qu'on récupère ce morceau de formule au format texte ..

Je ne m'y connais que très peu (pour ne pas dire pas du tout) en VBA.

Pouvez vous m'aider ? Me donner des pistes ?

Je vous remercie d'avance

Bonjour,

Une formule à placer en A2

=SI("A1"<>"";A1;"")

Si A1 n'est pas vide, la valeur A1 est transcrite dans A2

Sinon A2 reste vide ou insère un zéro (a supprimer avec les options, supprimer les zéros des cellules dont la valeur est nulle)

Pierrot

La valeur ne m'intéresse pas, en fait ce que je cherche à faire c'est ré-utiliser un bout de formule, sans me soucier de la valeur.

Alors, dans ce cas, tire la formule vers le bas avec la petite croix

dans le coin inférieur droit de la cellule

Bonjour,

Donne-nous un exemple concret dans un fichier Excel à joindre avec le message.

J'ai probablement mal expliqué mon problème.

En fait mes formules peuvent travailler sur un nombre différents de valeurs.

Imaginons la colonne A composée de cellules contenant des valeurs allant de 1 à 10.

Colonne B Cellule 1 =Somme(A1:A4)

Cellule 2 =Somme(A4:A20)

Cellule 3 =Somme(A21:A100)

Il n'y a pas de rapport. Donc impossibilité d'utiliser "la petite croix" en bas à droite de la case puisque ça ne ferait que récrire la formule en gardant la somme d'une liste de X cellules, X restant constant.

Mais cette colonne B est déjà écrite, et moi je cherche à faire une colonne C où les formules se trouvent dans chaque cellule seraient de la forme =Prod( )

Chaque produit reprenant les valeurs que traite les sommes des cellules (de la colonne B) correspondantes.

22exemple.xlsx (12.58 Ko)

Bonjour,

Essaye cette formule suivante et à copier vers les deux autres zones :

=SOMME.SI($A$2:$A$25;A2;$B$2:$B$25)

ça pourrait fonctionnait. En fait ça fonctionnerait parfaitement, mais il faudrait que la condition change avec les différentes cases. A2, A15, A20, pour respectivement les cases fusionnées 1, 2 et 3.

Donc par instinct j'aurais utilisé le cliqué glissé de la petite croix sauf qu'on ne peut pas le faire puisque les cases fusionnées ne font pas les mêmes tailles.

Je ne peux pas non plus me permettre de c/c dans chaque cellule et faire la correction car j'ai plusieurs milliers de valeurs.

Peut être faudrait il créer une macro sous VBA pour automatiser ça ?

Je vois un algorythme possible dans ma tête mais le retranscrire sous VBA ... Je ne saurais pas le faire.

Re,

A essayer :

Sub MergedCellsFormula()
    For i = 2 To Range("A" & Rows.Count).End(xlUp).Row
        If adr <> Range("G" & i).MergeArea.Address(0, 0) Then
            adr = Range("G" & i).MergeArea.Address(0, 0)
            adrSurface = Replace(adr, "G", "B")
            adrXgeo = Replace(adr, "G", "C")
            adrYgeo = Replace(adr, "G", "D")
            Cells(i, "E") = "=SUMPRODUCT(" & adrSurface & "," & adrXgeo & ")/SUM(" & adrSurface & ")"
            'Cells(i, "E") = WorksheetFunction.SumProduct(Range(adrSurface), Range(adrXgeo)) / WorksheetFunction.Sum(Range(adrSurface)) 'valeurs
            Cells(i, "F") = "=SUMPRODUCT(" & adrSurface & "," & adrYgeo & ")/SUM(" & adrSurface & ")"
            'Cells(i, "F") = WorksheetFunction.SumProduct(Range(adrSurface), Range(adrYgeo)) / WorksheetFunction.Sum(Range(adrSurface)) 'valeurs
            Cells(i, "G") = "=SUM(" & adrSurface & ")"
            'Cells(i, "G") = WorksheetFunction.Sum(Range(adrSurface)) 'valeurs
        End If
    Next i
End Sub

Bonjour Raja, tout d'abord merci d'investir de votre temps pour m'aider.

Après test de votre code, je peux vous dire qu'il fonctionne parfaitement.

Je vous remercie je vais étudier et réutiliser ce bout de code pour mes prochains problèmes.

Puis-je vous demander de m'expliquer les lignes en commentaire ? Ce sont des traductions des lignes du dessus avec des formules plus générales ? Quelle serait la différence ? Quand utiliser l'une plutôt que l'autre ?

Encore merci !

Re,

Ce n'est pas clair. Il faut expliciter ta demande par des exemples qui correspondent à ton fichier joint. Si tu nous disait tout dès le début, ça serait plus simple. Après, tout est possible. C'est la manière d'expliquer le problème qui conditionne la solution. Si moi je ne peux pas, il y aurait toujours quelqu'un qui te proposera une solution.

Je viens d'éditer la réponse, j'avais fait une erreur. Excusez moi.

Re,

Voir PJ

Je vous remercie Raja, votre code fait exactement ce dont j'avais besoin.

Vous m'avez énormément aidé sur cette étape de mon projet, mille mercis !

Re,

Les lignes en commentaires ramènent les valeurs à la place des formules. C'est une option pour alléger le fichier car les formules dans un gros tableau peut alourdir le fichier. Télécharge à nouveau le fichier joint pour voir les possibilités différentes.

J'ai vu la nouvelle pièce jointe, et j'ai pu comprendre les commentaires de la première pièce jointe grâce à cette dernière.

Je vous remercie grandement, avec ces deux exemples, j'ai pu comprendre le fonctionnement des deux macros. J'ai pu réutiliser la méthode pour l'adapter à mes différents problèmes.

merci !

Rechercher des sujets similaires à "reutiliser bout formule"