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.
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
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.
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
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
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