MACRO remplacer texte formule depuis autre cellule

Bonjour à tous,

Je suis tout nouveau et c'est donc la première fois que je poste, jusqu’à présent je trouvais mon bonheur pour résoudre mes petits problèmes Excel.

Ceci étant dit aujourd'hui je bute sur un problème et mes connaissances en vba se limitant au basic je n'arrive pas à le surmonter même avec tous les sujets présents sur la toile et en essayant de reformuler mon problème pour au moins trouver des bribes de réponse.

Alors voilà, je me suis fait un code qui va me chercher le texte voulu d'une cellule vers 5 cellules d'une même ligne pour remplacer un bout du texte de la formule présente mais j'aimerais généraliser cette formule de A2 à A30 (Dans chacune des cellules de la colonnes A).

Ou pour être plus précis que la macro incrémente le texte de chaque cellule de la colonne A, dans chaque cellule des colonnes B à E à l'endroit souhaité dans une formule, et faire une boucle pour qu'il fasse cellule par cellule.

Jusqu'à présent je le faisait manuellement et c'est assez fastidieux, même avec le code ci-dessous qui revient au même à peu de chose de près à le faire manuellement.

Tout d'abord est-ce que problème est résolvable ? si oui pouvez- vous m'aider ?

Si vous avez d'autres approches, je suis preneur.

Cf. tableau en annexe avec une partie des données, pour des soucis de confidentialité je n'ai pas tout mis et j'ai adapté (enfin je pense) le code au tableau joint.

Merci pour votre aide,

Sachant que A8 contient le texte et B8 à E8 contient le texte cible (texte surligné) cf. ci-desous

Sub Copie()
    Range("A8").Select
    ActiveCell.FormulaR1C1 = "Erreur de saisie code analyse non vu au prélèvement"
    Range("B8").Select
    ActiveCell.FormulaR1C1 = _
        "=SUMPRODUCT(('importation données VE'!C5=""Erreur de saisie code analyse non vu au prélèvement"")*('importation données VE'!C12=""Non Conformité""))"
    Range("C8").Select
    ActiveCell.FormulaR1C1 = _
        "=SUMPRODUCT(('importation données VA'!C5=""Erreur de saisie code analyse non vu au prélèvement"")*('importation données VA'!C12=""Non Conformité""))"
    Range("D8").Select
    ActiveCell.FormulaR1C1 = _
        "=SUMPRODUCT(('importation données SG'!C5=""Erreur de saisie code analyse non vu au prélèvement"")*('importation données SG'!C12=""Non Conformité""))"
    Range("E8").Select
    ActiveCell.FormulaR1C1 = _
        "=SUMPRODUCT(('importation données SR'!C5=""Erreur de saisie code analyse non vu au prélèvement"")*('importation données SR'!C12=""Non Conformité""))"
    Range("F8").Select
    ActiveCell.FormulaR1C1 = _
        "=SUMPRODUCT(('importation données FF'!C5=""Erreur de saisie code analyse non vu au prélèvement"")*('importation données FF'!C12=""Non Conformité""))"
End Sub

Bonsoir,

en remplaçant le texte par [A1].value....

@ bientôt

LouReeD

Bonjour,

LooReeD, merci pour votre réponse,

J'ai beau essayer d'appliqué votre idée je n'ai pas de résultat. Il me remplace le texte par [A1].Value

Du coup je ne vois pas comment intégrer cela.

J'ai essayé de définir une variable, mais je n'arrive pas à l'intégrer la variable aux formules des autres cellules.

lphoenix,

Bonsoir,

"=SUMPRODUCT(('importation données VE'!C5=""" & [A1].value & """)*('importation données VE'!C12=""Non Conformité""))"

où sur la ligne 8 il faut mettre [A8].value

cela ne marche pas ? attention il faut 3 guillemets de chaque coté je crois

@ bientôt

LouReeD

Bonsoir,

Merci LouReeD, ça fonctionne, c'est déjà un grand pas pour moi merci beaucoup.

Je ne sais pas si je dois ouvrir un autre "post" mais l'étape suivante serait de construire une boucle à partir de cela :

pour qu'il passe à A9 et change le texte de B9 à F9 et ainsi de suite (A10, A11,...).

Dans l'état actuelle des choses ça m'aide déjà beaucoup.

Merci encore,

Bonne soirée,

Bonjour,

petites réflexion...

@ bientôt

LouReeD

Re bonsoir,

je pars du principe qu'on commence en ligne 8 et qu'on s'arrête à la ligne avant "Totalité des NC par site "

Sub Copie()
    Dim Ligne_action As Long
    Ligne_action = 8
    Do
        If Range("A" & Ligne_action).Value = "Totalité des NC par site " Then Exit Do
        Range("B" & Ligne_action).Select
        ActiveCell.FormulaR1C1 = _
            "=SUMPRODUCT(('importation données VE'!C5=""" & Range("A" & Ligne_action) & """)*('importation données VE'!C12=""Non Conformité""))"
        Range("C" & Ligne_action).Select
        ActiveCell.FormulaR1C1 = _
            "=SUMPRODUCT(('importation données VA'!C5=""" & Range("A" & Ligne_action) & """)*('importation données VA'!C12=""Non Conformité""))"
        Range("D" & Ligne_action).Select
        ActiveCell.FormulaR1C1 = _
            "=SUMPRODUCT(('importation données SG'!C5=""" & Range("A" & Ligne_action) & """)*('importation données SG'!C12=""Non Conformité""))"
        Range("E" & Ligne_action).Select
        ActiveCell.FormulaR1C1 = _
            "=SUMPRODUCT(('importation données SR'!C5=""" & Range("A" & Ligne_action) & """)*('importation données SR'!C12=""Non Conformité""))"
        Range("F" & Ligne_action).Select
        ActiveCell.FormulaR1C1 = _
            "=SUMPRODUCT(('importation données FF'!C5=""" & Range("A" & Ligne_action) & """)*('importation données FF'!C12=""Non Conformité""))"
        Ligne_action = Ligne_action + 1
    Loop
End Sub

et que les référence C5 et C12 ne changent pas...

@ bientôt

LouReeD

Bonsoir,

Merci beaucoup LooReeD,

ça fonctionne parfaitement pour ce cas et de par votre principe. C'est ce que je voulais, la réponse précédent m'avait déjà permis de gagner un temps fou mais la c'est encore mieux parce que ce code simplifie tout le reste sachant que j'ai des tableaux de différentes tailles.

C'est super, merci encore !!

Bonne soirée à vous,

Merci pour vos mercis !

Juste une petite erreur : LouReeD avec un U est non pas deux O !

@ bientôt

MLouReeD

Re bonsoir,

Milles excuses,

Cest noté, et merci encore,

Par ailleurs peut on ajouter une troisieme condition a "sumproduct qui serait en rapport avec une autre colonne ?

Par exemple en plus de c12 non conformité, la colonne c3 08- postanalytique ?

Ce sera ma derniere question en lien avec tout cela.

Je previse qu en l etat actuelle la questuon est resolue mais cest pour aller un peu plus loin encore,

Lphoenix

Bonjour,

sur un Sommeprod vous pouvez très bien rajouter une condition, avec le même principe : vous multiplier au reste la nouvelle condition.

@ bientôt

LouReeD

Bonjour,

Merci LouReeD pour cet éclaircissement, j'avais pourtant essayé de refaire la même chose mais ça ne fonctionnait pas (je sais maintenant à peu près pourquoi.

Après un test cela est concluant, je l'ai même généralisé :

Sub import_nc_item_test()
        Dim Ligne_action As Long
        Ligne_action = 2
        Do
            If Range("A" & Ligne_action).Value = "Total" Then Exit Do
            Range("B" & Ligne_action).Select
            ActiveCell.FormulaR1C1 = _
                "=SUMPRODUCT(('importation données VE'!C5=""" & Range("A" & Ligne_action) & """)*('importation données VE'!C12=""Non Conformité"")*('importation données VE'!C4=""" & [A1].Value & """))"
            Range("C" & Ligne_action).Select
            ActiveCell.FormulaR1C1 = _
                "=SUMPRODUCT(('importation données VA'!C5=""" & Range("A" & Ligne_action) & """)*('importation données VA'!C12=""Non Conformité"")*('importation données VA'!C4=""" & [A1].Value & """))"
            Range("D" & Ligne_action).Select
            ActiveCell.FormulaR1C1 = _
                "=SUMPRODUCT(('importation données SG'!C5=""" & Range("A" & Ligne_action) & """)*('importation données SG'!C12=""Non Conformité"")*('importation données SG'!C4=""" & [A1].Value & """))"
            Range("E" & Ligne_action).Select
            ActiveCell.FormulaR1C1 = _
                "=SUMPRODUCT(('importation données SR'!C5=""" & Range("A" & Ligne_action) & """)*('importation données SR'!C12=""Non Conformité"")*('importation données SR'!C4=""" & [A1].Value & """))"
            Range("F" & Ligne_action).Select
            ActiveCell.FormulaR1C1 = _
                "=SUMPRODUCT(('importation données FF'!C5=""" & Range("A" & Ligne_action) & """)*('importation données FF'!C12=""Non Conformité"")*('importation données FF'!C4=""" & [A1].Value & """))"
            Ligne_action = Ligne_action + 1
        Loop
    End Sub

C'est tout à fait ce que je voulais.

Merci encore pour toutes ces précieuses informations,

J'ai beaucoup appris grâce à vous,

Bonne journée à vous,

à bientôt,

Lphoenix

Et encore vous n'êtes pas "tombé" sur le meilleur !

Mais oui, c'est vrai, on peut apprendre avec moi...

@ très bientôt sur le forum car quand on commence à y gouter, on ne s'arrête plus ! C'est presque du Nutella !

LouReeD

Rechercher des sujets similaires à "macro remplacer texte formule"