ActiveCell.Formula. Variable dans transfert de formule

  • Initiateur de la discussion Initiateur de la discussion perubu
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

perubu

XLDnaute Nouveau
Bonjour le forum
Félicitations à tous pour le niveau

Je suis autodidacte en VBA et il manque certainement quelques notions de bases...
J'ai un petit PB avec la fonction d'intégration d'une formule dans une cellule en automatique
Dans une partie de mon programme, je crée une nouvelle feuille, lui affecte un nouveau nom d’onglet, et je veux récupérer la valeur d’une cellule de cette nouvelle feuille dans une feuille récap. existante.
Je voulais me servir de la fonction ActiveCell.Formula, mais je n’arrive pas a la faire fonctionner avec une variable

Pour visualiser le PB :
le programme crée une nouvelle feuille (avec incrément du type feuil1, feuil2….) soit feuil9 saisie dans une variable (num_feuil)
je veux en D22 de ma feuille récap. La valeur C19 de la nouvelle feuille
La formule ci-dessous fonctionne =>

Range("D22").Select
ActiveCell.Formula = "=+‘Feuil9’!C19" ‘ OK

mais impossible de remplacer ‘feuil9’ par sa variable

Range("D22").Select
ActiveCell.Formula = "=+num_feuil!C19" ‘ Ne fonctionne pas !

Fonction mal rédigée ou impossibilité technique ?

Merci d’avance
 
Re : ActiveCell.Formula. Variable dans transfert de formule

Bonjour perubu,
Comment récupères-tu ta variable (num_feuil)?
Est-ce son index?
dans ce cas, tu peux mettre :

Code:
Range("D22").Formula = "=Feuil" & num_feuil & "!C19"

ou autrement, si tu insères une nouvelle feuille, son index devrait donc être le nombre de feuilles du classeur (sauf s'il y a eu suppression de feuille...) :

Code:
Range("D22").Formula = "=Feuil" & Sheets.Count & "!C19"
 
Re : ActiveCell.Formula. Variable dans transfert de formule

Bonjour:

Petite explication: dans ta formule originale, numfeuil étant entre les guillemets est interprété comme du texte; il faut utiliser l'opérateur de concaténation pour assembler des chaînes de texte.

Dans l'expression Feuil" & num_feuil & "!C19", num_feuil est une variable interprétée comme telle et remplacée par sa valeur ...
 
Re : ActiveCell.Formula. Variable dans transfert de formule

Désolé pour une réponse tardive mais pour moi qui habite dans les champs, Internet c'est à 33K avec des temps d'affichage de l'époque du TO7! (pour les connaisseurs..)

Merci à tous. C'est bien l'opérateur de concaténation qu'il va faloir étudier un peu!!
Bonne journée
 
Re : ActiveCell.Formula. Variable dans transfert de formule

Bonjour,

J'aimerais créer une fonction qui prendrait en paramètre le nom d'une feuille et qui me retourne la valeur de la cellule A1 de la feuille passé en paramètre.


J'ai l'erreur #VALEUR avec le code ci-dessous :

La cellule contiendrait cette valeur :
=rechercherValeur("Feuil2")


La macro :
Function toto(s As String) As String
Worksheets("Feuil1").Range("A1").Formula = "" '"=" & s & "!A1"
toto= "ok"
End Function


PS : j'ai excel 2007

Merci.
Aurore
 
Re : ActiveCell.Formula. Variable dans transfert de formule

Merci pour la réponse. ^-^


La réponse est :

Function toto(s As String) As String
toto = Worksheets(s).Range("A1")
End Function


La cellule contient :
=toto("Feuil2")
 
Dernière édition:
Bonjour, merci pour ce site et pour l'aide
je suis autodidacte aussi et je cherche à automatiser mes travaux répétitifs en apprenant toute seule les macros...

je crois que j'ai le meme pb et je suis debutante : voici la formule que je veux que la macro saisisse en une cellule, mais elle contient plein d'apostrophes et le message d'erreur est "erreur de compilation : attendu expression"

Range("AP436").Select
ActiveCell.FormulaLocal = "=SI('2'!O10=""x"";2;0)+SI('2'!Q10=""x"";2;0)+SI('2'!S10=""x"";3;0)+SI('2'!T10=""x"";3;0)+SI('2'!U10=""x"";3;0)+SI('2'!V10=""x"";3;0)+SI('2'!X10=""monthly"";4;0)+SI(ESTNUM(CHERCHE(""Auditeur"";'2'!Z10))=VRAI;6;0)+SI('2'!AO10=""oui"";6;0)+SI(ESTNUM(CHERCHE(""Auditeur"";'2'!AR10))=VRAI;6;0)+SI(ET('2'!BB10<5;'2'!BB10>2);6;0) _
+SI('2'!O19=""x"";2;0)+SI('2'!Q19=""x"";2;0)+SI('2'!S19=""x"";3;0)+SI('2'!T19=""x"";3;0)+SI('2'!U19=""x"";3;0)+SI('2'!V19=""x"";3;0)+SI('2'!X19=""weekly"";4;0)+SI(ESTNUM(CHERCHE(""Auditeur"";'2'!Z10))=VRAI;6;0)+SI('2'!AO10=""non"";6;0) _
+SI(ESTNUM(CHERCHE(""test"";'2'!Z10))=VRAI;2;0)+SI(ESTNUM(CHERCHE(""test"";'2'!Z19))=VRAI;2;0)+SI(ESTNUM(CHERCHE(""test"";'2'!AR10))=VRAI;1;0) _
+SI('2'!BB19<>"""";-2;0)+SI('2'!AR22<>"""";-2;0)"
Range("AP438").Select


que dois je changer svp ? mes feuilles de calcul sont nommées par des numéros (ici c'est '2'!) et je ne peux pas changer cela.
 
Dernière édition:
Bonjour.
Vous ne pouvez pas couper une constante String comme ça. Il faut terminer la ligne par "" _" et commencer la ligne suite par "& "".
Vous pouvez raccourcir et simplifier les termes de la forme "SI(Condition;n;0)" en "n*(Condition)".
Les "=VRAI" sont inutiles.
 
Bonjour.
Vous ne pouvez pas couper une constante String comme ça. Il faut terminer la ligne par "" _" et commencer la ligne suite par "& "".
Vous pouvez raccourcir et simplifier les termes de la forme "SI(Condition;n;0)" en "n*(Condition)".
Les "=VRAI" sont inutiles.
Merciiiiiiiiiiii, les "VRAI" sont déjà éliminés, la formule est en cours d'amélioration, mais l'obstacle que j'ai réside dans le signe ( ' )
 
Hi,

VB:
    Range("AP436").FormulaLocal = "=    SI('2'!O10=""x"";2;0)" & _
                                    " + SI('2'!Q10=""x"";2;0)" & _
                                    " + SI('2'!S10=""x"";3;0)" & _
                                    " + SI('2'!T10=""x"";3;0)" & _
                                    " + SI('2'!U10=""x"";3;0)" & _
                                    " + SI('2'!V10=""x"";3;0)" & _
                                    " + SI('2'!X10=""monthly"";4;0)" & _
                                    " + SI(ESTNUM(CHERCHE(""Auditeur"";'2'!Z10));6;0)" & _
                                    " + SI('2'!AO10=""oui"";6;0)" & _
                                    " + SI(ESTNUM(CHERCHE(""Auditeur"";'2'!AR10));6;0)" & _
                                    " + SI(ET('2'!BB10<5;'2'!BB10>2);6;0)" & _
                                    " + SI('2'!O19=""x"";2;0)" & _
                                    " + SI('2'!Q19=""x"";2;0)" & _
                                    " + SI('2'!S19=""x"";3;0)" & _
                                    " + SI('2'!T19=""x"";3;0)" & _
                                    " + SI('2'!U19=""x"";3;0)" & _
                                    " + SI('2'!V19=""x"";3;0)" & _
                                    " + SI('2'!X19=""weekly"";4;0)" & _
                                    " + SI(ESTNUM(CHERCHE(""Auditeur"";'2'!Z10));6;0)" & _
                                    " + SI('2'!AO10=""non"";6;0)" & _
                                    " + SI(ESTNUM(CHERCHE(""test"";'2'!Z10));2;0)" & _
                                    " + SI(ESTNUM(CHERCHE(""test"";'2'!Z19));2;0)" & _
                                    " + SI(ESTNUM(CHERCHE(""test"";'2'!AR10));1;0)" & _
                                    " + SI('2'!BB19<>"""";-2;0)" & _
                                    " + SI('2'!AR22<>"""";-2;0)"

ou peut-être ceci :
VB:
    Range("AP436").FormulaLocal = "=    2*('2'!O10=""x"")" & _
                                    " + 2*('2'!Q10=""x"")" & _
                                    " + 3*('2'!S10=""x"")" & _
                                    " + 3*('2'!T10=""x"")" & _
                                    " + 3*('2'!U10=""x"")" & _
                                    " + 3*('2'!V10=""x"")" & _
                                    " + 4*('2'!X10=""monthly"")" & _
                                    " + 6*ESTNUM(CHERCHE(""Auditeur"";'2'!Z10))" & _
                                    " + 6*('2'!AO10=""oui"")" & _
                                    " + 6*ESTNUM(CHERCHE(""Auditeur"";'2'!AR10))" & _
                                    " + 6*(2<'2'!BB10)*('2'!BB10<5)" & _
                                    " + 2*('2'!O19=""x"")" & _
                                    " + 2*('2'!Q19=""x"")" & _
                                    " + 3*('2'!S19=""x"")" & _
                                    " + 3*('2'!T19=""x"")" & _
                                    " + 3*('2'!U19=""x"")" & _
                                    " + 3*('2'!V19=""x"")" & _
                                    " + 4*('2'!X19=""weekly"")" & _
                                    " + 9*ESTNUM(CHERCHE(""Auditeur"";'2'!Z10))" & _
                                    " + 6*('2'!AO10=""non"")" & _
                                    " + 2*ESTNUM(CHERCHE(""test"";'2'!Z10))" & _
                                    " + 2*ESTNUM(CHERCHE(""test"";'2'!Z19))" & _
                                    " + ESTNUM(CHERCHE(""test"";'2'!AR10))" & _
                                    " - 2*('2'!BB19<>"""")" & _
                                    " - 2*('2'!AR22<>"""")"

ou peut-être cela :
VB:
    Range("AP436").FormulaLocal = "=    2 * ( ('2'!O10=""x"") + ('2'!Q10=""x"") )" & _
                                    " + 3 * ( ('2'!S10=""x"") + ('2'!T10=""x"") + ('2'!U10=""x"") + ('2'!V10=""x"") )" & _
                                    " + 4 * ( '2'!X10=""monthly"" )" & _
                                    " + 6 * ( ESTNUM(CHERCHE(""Auditeur"";'2'!Z10)) + ('2'!AO10=""oui"") + ESTNUM(CHERCHE(""Auditeur"";'2'!AR10)) + (2<'2'!BB10)*('2'!BB10<5) )" & _
                                    " + 2 * ( ('2'!O19=""x"") + ('2'!Q19=""x"") )" & _
                                    " + 3 * ( ('2'!S19=""x"") + ('2'!T19=""x"") + ('2'!U19=""x"") + ('2'!V19=""x"") )" & _
                                    " + 4 * ( '2'!X19=""weekly"" )" & _
                                    " + 9 * ESTNUM(CHERCHE(""Auditeur"";'2'!Z10))" & _
                                    " + 6 * ( '2'!AO10=""non"" )" & _
                                    " + 2 * ( ESTNUM(CHERCHE(""test"";'2'!Z10)) + ESTNUM(CHERCHE(""test"";'2'!Z19)) )" & _
                                    " + ESTNUM(CHERCHE(""test"";'2'!AR10))" & _
                                    " - 2 * ( ('2'!BB19<>"""") + ('2'!AR22<>"""") )"

ou etc. 😉
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
10
Affichages
440
Retour