[RÉSOLU] Macro simple : Construire une formule automatiquement

Xcited

XLDnaute Nouveau
Bonjour,

Débutant en macros, je chercherai à faire une formule qui se construirait sur la base d'une macro qui doit pouvoir récupérer des valeurs dans des onglets ayant tous une structure similaire.

Situation :

J'ai un classeur "Feuil1!" qui dispose :

- En colonne A du nom de tous les autres onglets
- En colonne C les formules permettant d'avoir les totaux des valeurs contenues dans chaque onglet (Total 1 = somme des valeur en B1 de chaque autre onglet, Total 2 = somme des valeurs en B2 de chaque autre onglet...)

Comment éditer une macro qui permette d'obtenir la formule en Colonne C de la "feuil1" automatiquement et avec les données présentes ?

J'ai fait un test de macro, mais qui ne fonctionne pas (objet requis sur l'objet "Formule"). Voici le code :

Code:
Sub Bouton1_Clic()

Dim Ressource As String
Dim Formule As Object
Dim Formulefin As Object
Dim i As Integer

Set Formule = Sheets("Feuil1").Range("A1").Value

    For i = 1 To Sheets("Feuil1").Range("A1").End(xlDown).Row
            Ressource = ThisWorkbook.Worksheets("Feuil1").Range("A" & i)
            Set Formule = Formule & Ressource & "!B1+"
            
    Next i
    
            Set Formulefin = "=" & Formule
            Set ThisWorkbook.Worksheets("Feuil1").Range("C1").Formula = Formulefin

    Sheets("Feuil1").Range("C1").AutoFill Destination:=Range("C1:C3")

End Sub

Par avance merci de votre aide !
 

Pièces jointes

  • Test - édition de macros v2.xls
    40.5 KB · Affichages: 54
Dernière édition:

kjin

XLDnaute Barbatruc
Re : Macro simple : Construire une formule automatiquement

Bonjour,
J'ai tenté de comprendre le raisonnement...
Code:
Sub Bouton1_Clic()
Dim formule$, i&, j&
For i = 1 To Range("B65000").End(xlUp).Row
    For j = 1 To Range("A65000").End(xlUp).Row
        formule = formule & "INDIRECT(A" & j & "&""!B""&ROW())+"
    Next
    Range("C" & i).Formula = "=" & Left(formule, Len(formule) - 1)
    formule = ""
Next

End Sub
...mais sans succès
A+
kjin
 

david84

XLDnaute Barbatruc
Re : Macro simple : Construire une formule automatiquement

Bonjour, salut kjin:),
Je suis comme kjin : dans l'expectative:confused:.
Les données de la feuille 1 colonne B correspondent à quoi ?
Le plus simple est de noter manuellement le résultat attendu sur ton fichier exemple avec quelques mots d'explication.
A+
 

Xcited

XLDnaute Nouveau
Re : Macro simple : Construire une formule automatiquement

Alors, pour répondre à chacun : J'ai pu tester la macro proposée et merci à Kjin pour cela !

Le résultat attendu c'est produire la même formule que celle présente dans chaque cellule renseignée en colonne C de la "feuil1".

La Macro fournie par kjin produit bien le résultat "chiffré" attendu, mais pas la formule attendue, or c'est bien la formule qui m'intéresse.

Je re-uploade le fichier avec le commentaire.

PS : Même tributaire de votre bon cœur, je me permet de préciser que les "..." c'est pas particulièrement plaisant (sans vouloir être vexant) :confused: "être dans l'expectative" est nettement plus poétique :) et laisse moins de doute sur le ton du message !
 

MJ13

XLDnaute Barbatruc
Re : Macro simple : Construire une formule automatiquement

Bonjour à tous

Voici une petite adaptation de ce que m'a dit henry :), en sélectionnant la zone où seront copier les macros (facilement adaptable):

Code:
Selection.FormulaR1C1 = "=Albert!RC[-1]+Hugo!RC[-1]+Paul!RC[-1]"
 

kjin

XLDnaute Barbatruc
Re : Macro simple : Construire une formule automatiquement

Bonsoir,
...je me permet de préciser que les "..." c'est pas particulièrement plaisant
Snirf... j'ai juste essayé de comprendre comment faire...
C'est l'hôpital qui se moque de la charité
Quand au "ton" du message, la langue française est suffisamment riche pour que je m'exprime autrement que par petits points, au besoin j'utilise les smileys, n'y voit donc rien d'autre que ce que veulent dire 3 petits points

Edit : je ne vois pas ce que tu reproches à ma formule, mais bon...

Code:
Sub Bouton1_Clic()
Dim formule$, i&, j&
For i = 1 To Range("B65000").End(xlUp).Row
    For j = 1 To Range("A65000").End(xlUp).Row
        formule = formule & Range("A" & j) & "!B" & i & "+"
    Next
    Range("C" & i).Formula = "=" & Left(formule, Len(formule) - 1)
    formule = ""
Next
End Sub

A+
kjin
 
Dernière édition:

Xcited

XLDnaute Nouveau
Re : Macro simple : Construire une formule automatiquement

Ah voilà ça fonctionne exactement comme je le souhaite ! Merci Kjin

La précédente formule fournissait le bon résultat chiffré comme je le disais, mais en fait derrière, il faut imaginer que l'onglet feuil1! d'une part et les onglets Albert Hugo Paul d'autre part, soient de structures différentes. Dans ce cas ta formule n'aurait pas marché !

Mais bon c'est de ma faute, je ne l'avais pas précisé assez tôt !

Pour boucler le HS :

Maintenant concernant les trois petits points et j'en arrêterai là pour ma part, la page wikipédia montre bien qu'il y a des sens donnés qui peuvent être lourds de "sous-entendus". Rien de plus ! Ce n'est pas vraiment un reproche, c'est juste qu'à l'écrit on pourrait avoir l'impression dans tes phrases :

Mais encore...!

Ca ne nous dit pas si la macro proposée correspond à tes attentes...

... que ça exprimait, je ne sais pas mais, quelque chose comme de la lassitude ou un sentiment du même acabit ! C'est tout ! :) (je ne reproche l'usage du 3 petits points en toutes circonstances, ou je veux bien me faire traiter de parano :D)

Loin de moi l'idée de me lancer à un jeu de provocation, c'est juste que je ne savais pas comment le prendre !

Merci en tout cas de ton aide !

Je passe le topic en résolu !

EDIT : Ahem... c'est pas possible apparemment ?
 
Dernière édition:

Discussions similaires

Réponses
2
Affichages
303
Réponses
6
Affichages
286
Réponses
2
Affichages
142

Statistiques des forums

Discussions
312 492
Messages
2 088 925
Membres
103 984
dernier inscrit
maliko67