Syntaxe calcul valeur et la renvoyer dans une autre feuille
fab250
Messages postés
5
Statut
Membre
-
fab250 Messages postés 5 Statut Membre -
fab250 Messages postés 5 Statut Membre -
Bonjour,
Je suis novice en écriture de macros avec VB et j'aimerai avoir de l'aide par rapport au problème suivant. J'ai des données qui « tombent » toutes les semaines et j'aimerai les traiter.
Ici, mon but est de calculer une valeur issue d'une colonne de nombre. Cette valeur, j'aimerai la mettre dans une autre feuille.
J'ai essayé d'écrire une macro mais elle ne marche pas encore.
Voici l'ébauche de ma macro:
Sub Calculs()
Dim F_analyse As Worksheet
Dim F_resultats As Worksheet
Dim LstRw As Long
Dim provisoire As Double
Set F_analyse = ActiveWorkbook.Sheets(1) 'lieu des données= "Analyse "
Set F_resultats = ActiveWorkbook.Sheets(2)
F_analyse.Select 'passage dans la feuille des données
LstRw = .Cells(.Rows.Count, 1).End(xlUp).Row => erreur de compilation : référence incorrecte ou non qualifié (mais je ne vois pas pourquoi car pour moi cette variable qui me sert à aller jusqu'à la dernière valeur de la colonne)
provisoire = "=SOMME(&CT$4:$CT$ & LstRw)/(60*1000)" 'somme de la case A4 à la dernière valeure de cette colonne'
F_resultats.Select 'passage dans la feuille des résultats
provisoire = Range("A2") 'provisoire contient la valeur de la case A2'
End Sub
Ici, mon but est d'acquérir la bonne syntaxe pour ensuite la transposer pour beaucoup d'autres calculs.
Merci d'avance pour votre aide.
Cordialement,
Fabien
Je suis novice en écriture de macros avec VB et j'aimerai avoir de l'aide par rapport au problème suivant. J'ai des données qui « tombent » toutes les semaines et j'aimerai les traiter.
Ici, mon but est de calculer une valeur issue d'une colonne de nombre. Cette valeur, j'aimerai la mettre dans une autre feuille.
J'ai essayé d'écrire une macro mais elle ne marche pas encore.
Voici l'ébauche de ma macro:
Sub Calculs()
Dim F_analyse As Worksheet
Dim F_resultats As Worksheet
Dim LstRw As Long
Dim provisoire As Double
Set F_analyse = ActiveWorkbook.Sheets(1) 'lieu des données= "Analyse "
Set F_resultats = ActiveWorkbook.Sheets(2)
F_analyse.Select 'passage dans la feuille des données
LstRw = .Cells(.Rows.Count, 1).End(xlUp).Row => erreur de compilation : référence incorrecte ou non qualifié (mais je ne vois pas pourquoi car pour moi cette variable qui me sert à aller jusqu'à la dernière valeur de la colonne)
provisoire = "=SOMME(&CT$4:$CT$ & LstRw)/(60*1000)" 'somme de la case A4 à la dernière valeure de cette colonne'
F_resultats.Select 'passage dans la feuille des résultats
provisoire = Range("A2") 'provisoire contient la valeur de la case A2'
End Sub
Ici, mon but est d'acquérir la bonne syntaxe pour ensuite la transposer pour beaucoup d'autres calculs.
Merci d'avance pour votre aide.
Cordialement,
Fabien
5 réponses
-
C'est parce que .End(xlUp) ne s'applique qu'à des range.
Plus d'info : https://docs.microsoft.com/en-us/previous-versions/office/developer/office-2003/aa214585(v=office.11)?redirectedfrom=MSDN
Et le . ne se met devant un objet que si tu utilise un "With"
*Pensez mettre vos messages en [Résolu] et cliquer sur le + des conseil qui vous ont été utils" -
Salut
LstRw = Il te manque peut-être qq chose devant les points ou il manque un "With ... end with" -
Bonjour Fabien
1) inutile de selectioner les feuilles pour y lire ou placer des valeurs
2) tes lignes de macros ne sont pas correctement écrites, il faut mettre :
Lstrw = F_analyse.Range("A" & Rows.Count).End(xlUp).Row 'derniere ligne npn vide de la colonne A
somme = Application.WorksheetFunction.Sum(F_analyse.Range("A4:A" & Lstrw)) 'calcul de la somme de A4 à A derniereligne
f_resultats.Range("A2") = somme ' inscription de la somme en A2 de la 2nde feuille
Cdlmnt
"L'imagination est plus importante que le savoir." A. Einstein -
Bonjour,
En général, les Select sont inutiles, voire néfastes !
Tu peux écrire :Sub Calculs() Dim F_analyse As Worksheet Dim F_resultats As Worksheet Dim LstRw As Long Set F_analyse = ActiveWorkbook.Sheets(1) 'lieu des données= "Analyse " Set F_resultats = ActiveWorkbook.Sheets(2) LstRw = F_analyse.Cells(F_analyse.Rows.Count, 1).End(xlUp).Row F_resultats.Range("A2").FormulaLocal = "=SOMME('" & _ F_analyse.Name & "'!$CT$4:$CT$" & LstRw & ")/(60*1000)" 'et éventuellement, pour remplacer la formule par sa valeur : F_resultats.Range("A2").Value = F_resultats.Range("A2").Value End Sub
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Bonjour à tous!
Merci beaucoup pour toutes ces explications. C'est vraiment sympa de pouvoir compter sur vous!
Grâce à vous, mon programme avance bien.
Cordialement,
Fabien