Macro - Automatisation création d'une mini formule

heislsim

XLDnaute Junior
Bonsoir bonsoir,

J'entame une nouvelle branche des macros et j'avoue être perdu :(
Je souhaite automatiser la création d'une formule mais elle doit commencer à une cellule "variable" (elle ne commence pas toujours à la même ligne).

Pour expliquer (ce munir du fichier), j'ai des valeurs d'angle et de Tension "Aller" et "Retour". Je dois les mettre leurs valeurs l'une après l'autre (Retour puis Aller ) ce que je fais déjà automatiquement via un macro dans la colonne E et F.
La dernière étape (qui est ce que je souhaite) c'est qu'à partir de la première valeur Aller (ici E/F 21) il y est le rajoute de la dernière valeur du Retour .
Du coup la G21 doit être "=E21+E$20" et idem même style pour H21 (=F21+F$20).
J'ai mise en jaune la partir avec rajout de E et F20

Le problème c'est que les données Aller et Retour n'ont jamais le même nombre de ligne ...


L'objectif est d'avoir le graphique compensé (et le donnée qui vont avec évidemment) car c'est ce que je dois analyser pour mon mémoire.


Merci d'avance,

Simon
 

Pièces jointes

  • Question pour Forum 2.xlsm
    19 KB · Affichages: 32
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : Macro - Automatisation création d'une mini formule

Bonsoir.
VB:
Private Sub Worksheet_Activate()
Dim NbLA As Long, NbLR As Long
NbLA = Me.[A65536].End(xlUp).Row - 2
NbLR = Me.[C65536].End(xlUp).Row - 2
Me.[G3:H3].Resize(NbLR).Value = Me.[C3:D3].Resize(NbLR).Value
Me.[G3:H3].Offset(NbLR).Resize(NbLA).FormulaR1C1 = "=RC[-2]+R" & NbLR + 2 & "C[-2]"
End Sub
 

heislsim

XLDnaute Junior
Re : Macro - Automatisation création d'une mini formule

Re bonsoir,

J'ai tenté la macro mais j'ai l'erreur suivant :
Erreur de compilation
Membre de méthode ou de données introuvable

En soulignant cette partie de la macro dans mon fichier pour le forum.
Code:
.[A65536]

Merci de m'avoir fait découvrir le private sub que je n'avais encore jamais rencontré ^^
 

Dranreb

XLDnaute Barbatruc
Re : Macro - Automatisation création d'une mini formule

Avez vous mis cette procédure dans le module de la feuille ?
Remarquez si vous l'aviez mis dans un module ordinaire il me semble qu'il aurait plutôt tiqué sur "Utilisation incorrecte du mot clé Me"

P.S. Eh, eh, eh ! Je reproduis l'erreur en la mettant dans ThisWorkbook. L'utilisation de crochets revient à invoquer la méthode Evaluate. C'est une méthode de l'objet Worksheet, aussi Application, mais pas Workbook.
 
Dernière édition:

heislsim

XLDnaute Junior
Re : Macro - Automatisation création d'une mini formule

J'avoue ne pas avoir tout compris du PS.

Je souhaite avoir un simple macro ou je peux placer des Sheets("XXX").Select au début pour pouvoir en enchainer plusieurs si nécessaire.
J'ai cru comprendre que c'était les [] qui posait problème, mais en les remplaçant par des () ça me met aussi une erreur :(
 

Dranreb

XLDnaute Barbatruc
Re : Macro - Automatisation création d'une mini formule

Moi non plus je n'y comprends plus rien à ce que vous voulez.
La macro indiquée, placée dans le module "Feuil2 (Faite vous plaisir)" met, à l'activation de la feuille "Faite vous plaisir", les mêmes valeurs et formules en colonnes "G:H" que dans la feuille "Ce que je souhaite".
Si vous avez besoin de l'appeler pour plusieurs feuilles à préciser en paramètre écrivez la Sub comme ça dans un module ordinaire :
VB:
Sub AjouterFormules(ByVal F As Worksheet)
Dim NbLA As Long, NbLR As Long
NbLA = F.[A65536].End(xlUp).Row - 2
NbLR = F.[C65536].End(xlUp).Row - 2
F.[G3:H3].Resize(NbLR).Value = F.[C3:D3].Resize(NbLR).Value
F.[G3:H3].Offset(NbLR).Resize(NbLA).FormulaR1C1 = "=RC[-2]+R" & NbLR + 2 & "C[-2]"
End Sub
Exemples d'appels :
AjouterFormules Feuil2
AjouterFormules Worksheets("Faite vous plaisir")
AjouterFormules ActiveSheet

Pas besoin de sélectionner les feuilles, juste les indiquer en paramètre.

Les [] ne posent aucun probème derrière une expression Worksheet suivie d'un point. Mais évidemment, si vous placiez la procédure initiale dans le module ThisWorkbook le mot clé Me désignait l'objet Workbook représentant le classeur dont le projet VBA portait la macro au lieu de désigner un objet Worksheet, et dans ce cas ça ne pouvait pas marcher.

P.S. J'ai testé avec succès la procédure indiquée plus haut en remplaçant le code initial dans le module "Feuil2 (Faite vous plaisir)" par :
VB:
Private Sub Worksheet_Activate()
AjouterFormules Me
End Sub
 
Dernière édition:

Membres actuellement en ligne

Statistiques des forums

Discussions
311 725
Messages
2 081 941
Membres
101 848
dernier inscrit
Djigbenou