1 pièce(s) jointe(s)
VBA problème de référence absolue dans le calcul de pourcentages
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: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 !
Code:
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 |
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:
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 |
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.
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.