Bonjour,
Je suis débutant en VBA et après des recherches infructueuses, je n’ai d’autre option que de demander de l’aide. Merci d’avance, donc, à ceux qui m’apporteront leur soutien.
Via une macro, dans un tableau Excel (2007), je souhaite calculer les pourcentages de chaque ligne. Cela implique d’avoir dans la formule la cellule des totaux en référence absolue et les autres cellules en référence relatives (soit =D4/$C$L). Or, le nombre de lignes du tableau est variable d’une fois sur l’autre (donc impossible de figer C et L).
J’ai essayé le code ci-dessous mais la formule dans Excel devient =D4/ADRESSE(5:5;D) {le smiley s'est invité sans être convié, je n'ai pas réussi à m'en débarrasser, en fait lire D: D sans l'espace} avec le message d’erreur #VALEUR !
J’ai ensuite voulu faire le calcul « dans le code » pour ensuite afficher le résultat dans les cellules d’Excel avec le code suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Range("D4").End(xlDown).Offset(-1, 1).Select ActiveCell.FormulaR1C1 = "=RC[-1]/ADDRESS(R[+1],C[-1])" ActiveCell.Copy Range(ActiveCell, "E4").Select ActiveSheet.Paste
mais alors le message d’erreur « Erreur 438 Propriété ou méthode non gérée par cet objet » est renvoyé sur la ligne 8.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 Dim NbLigne As Long, i As Long, j As Long NbLigne = Range("D" & Rows.Count).End(xlUp).Row i = NbLigne j = NbLigne Range("D4").End(xlDown).Select ActiveCell.Offset(-1, 1).Select For i = NbLigne To 4 Step -1 ActiveCell = Range(ActiveCell.offest(-1, 0)).Value / j ActiveCell.Offset(-1, 0).Select Next i
Par ailleurs, je n’ai pas trouvé comment afficher la valeur. J’ai essayé avec [ActiveCell] = mais alors le message d’erreur « Erreur 438 Propriété ou méthode non gérée par cet objet » est renvoyé.
Finalement mon problème se résume aux questions :
- comment dans VBA gérer ce problème de référence absolue dans une formule Excel avec un tableau dont le nombre de lignes varie ?
- comment effectuer un calcul dans VBA et afficher le résultat dans une cellule d’Excel ?
Toute proposition de solution à chacune de ces questions sera extrêmement bienvenue et son auteur en sera chaleureusement remercié.
Cordialement
PS: le fichier joint n'a pas grand intérêt. Il est juste là pour éviter quelques lignes de saisie.
Partager