Excel - Macro: tenir compte de la dernière ligne d'un tableau
Résolu
BILLING
Messages postés
166
Statut
Membre
-
BILLING Messages postés 166 Statut Membre -
BILLING Messages postés 166 Statut Membre -
Bonjour,
J'ai une formule en BI qui fonctionne bien sauf que je dois manuellement ajuster la cellule correspondant à la dernière ligne de la colonne A à chaque fois que mon tableau est mis à jours car des données s'ajoutent donc, le numéro de la dernière ligne augmente à chaque fois.
De plus je veux en faire une macro. Je l'aurais enregistrée moi-même si j'avais su composer ma formule pour qu'elle inclus toujours la dernière ligne peut importe le numéro de cette ligne.
La colonne à utiliser comme constante est en A. Les cellules de celle-ci sont toujours remplies.
Explication de ma formule: Il s'agit de faire la somme des montants en AK pour toutes les lignes ayant la même donnée en A (Transit No.). Par exemple, les celulles A7 et A8 sont identiques, donc faire la somme de AK7 + AK8 en BI7. Et ainsi de suite pour les autres.
J'ai mis un fichier échantillon sur cjoint.com
https://www.cjoint.com/?3KfqoLfXA5N
Merci à vous :-)
J'ai une formule en BI qui fonctionne bien sauf que je dois manuellement ajuster la cellule correspondant à la dernière ligne de la colonne A à chaque fois que mon tableau est mis à jours car des données s'ajoutent donc, le numéro de la dernière ligne augmente à chaque fois.
De plus je veux en faire une macro. Je l'aurais enregistrée moi-même si j'avais su composer ma formule pour qu'elle inclus toujours la dernière ligne peut importe le numéro de cette ligne.
La colonne à utiliser comme constante est en A. Les cellules de celle-ci sont toujours remplies.
Explication de ma formule: Il s'agit de faire la somme des montants en AK pour toutes les lignes ayant la même donnée en A (Transit No.). Par exemple, les celulles A7 et A8 sont identiques, donc faire la somme de AK7 + AK8 en BI7. Et ainsi de suite pour les autres.
J'ai mis un fichier échantillon sur cjoint.com
https://www.cjoint.com/?3KfqoLfXA5N
Merci à vous :-)
A voir également:
- Excel - Macro: tenir compte de la dernière ligne d'un tableau
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Si ou excel - Guide
- Déplacer colonne excel - Guide
5 réponses
tu as plusieurs manières pour trouver la dernière ligne
par ex
par ex
Sub derniereligne()
Dim derlig As Integer
derlig = Columns("A").Find("*", , , , , xlPrevious).Row
MsgBox derlig
End Sub
Oui je connais et je l'ai appliqué pour copier la formule sur chaque cellules de BI. Mais dans la formule elle même, la partie ($A$2:$A$7454;$A2;$AK$2:$AK$7454). Je ne sais pas comment l'écrire pour quelle cherche dans toutes les celulles de la colonne A.
Michel,
C'est certain que si je connaissais la réponse je ne poserais pas la question.
À mon avis le nombre de lignes ne change rien.
Par contre ce qui est important de savoir c'est que les "Transit No." sont toujours regroupés.
Et en BI, la formule qui s'y trouve en ce moment est celle que je veux modifier pour ne pas avoir à changer la dernière cellule de A et de AK. C'est aussi cette formule que je veux appliquer à toute la colonne BI sous forme de macro.
Je ne sais pas comment écrire ma formule de façon à ce quelle regarde toutes les données de la colonne A jusqu'à la dernière ligne sans vraiment savoir quelle sera la dernière ligne du tableau. Pour le moment, la dernière ligne est 7454 mais la semaine prochaine elle aura augmentée d'un nombre inconnu.
Je sais aussi que pour appliquer la formule (une fois que je saurai l'écrire) à toutes les celules de la colonne BI je peux utiliser quelque chose comme ceci:
Range("BI2").Select
derlig = Columns("A").Find("*", , , , , xlPrevious).Row
With Range("BI2")
.FormulaR1C1 =
.AutoFill Destination:=Range("BI2:BI" & derlig)
End With
Ce qu'il me manque c'est ce qui doit suivre: .FormulaR1C1 =
Voilà.
C'est certain que si je connaissais la réponse je ne poserais pas la question.
À mon avis le nombre de lignes ne change rien.
Par contre ce qui est important de savoir c'est que les "Transit No." sont toujours regroupés.
Et en BI, la formule qui s'y trouve en ce moment est celle que je veux modifier pour ne pas avoir à changer la dernière cellule de A et de AK. C'est aussi cette formule que je veux appliquer à toute la colonne BI sous forme de macro.
Je ne sais pas comment écrire ma formule de façon à ce quelle regarde toutes les données de la colonne A jusqu'à la dernière ligne sans vraiment savoir quelle sera la dernière ligne du tableau. Pour le moment, la dernière ligne est 7454 mais la semaine prochaine elle aura augmentée d'un nombre inconnu.
Je sais aussi que pour appliquer la formule (une fois que je saurai l'écrire) à toutes les celules de la colonne BI je peux utiliser quelque chose comme ceci:
Range("BI2").Select
derlig = Columns("A").Find("*", , , , , xlPrevious).Row
With Range("BI2")
.FormulaR1C1 =
.AutoFill Destination:=Range("BI2:BI" & derlig)
End With
Ce qu'il me manque c'est ce qui doit suivre: .FormulaR1C1 =
Voilà.
proposition par VBA
maquette:
https://www.cjoint.com/?3KfxFgU0oJi
Option Explicit
Sub addtionner_par_transit()
Dim Derlig As Integer, Cptr As Integer
Dim T_transit(), T_ak(), T_out()
Dim somme As Double, ligne As Integer, Ref As Long
'------Initialisations
Application.ScreenUpdating = False
Range("BJ2:BJ1000").ClearContents
'mise en RAM des données et résultats
Derlig = Columns("A").Find("*", , , , , xlPrevious).Row
T_transit = Application.Transpose(Range("A2:A" & Derlig).Value)
T_ak = Application.Transpose(Range("AK2:AK" & Derlig).Value)
ReDim T_out(1 To Derlig - 1)
'------ Calcul des sommes AK par Transit n°
For Cptr = 1 To UBound(T_transit)
somme = 0
ligne = Cptr
Ref = T_transit(Cptr)
On Error GoTo fin
While T_transit(Cptr) = Ref
somme = somme + T_ak(Cptr)
Cptr = Cptr + 1
Wend
Cptr = Cptr - 1
'mémorise résultat
T_out(ligne) = somme
Next
'------ affichage des sommes par transit n°
fin:
T_out(ligne) = somme
Range("BJ2").Resize(UBound(T_out), 1) = Application.Transpose(T_out)
End Sub
maquette:
https://www.cjoint.com/?3KfxFgU0oJi
Bonjour,
En ce qui concerne l'ajout de nouveaux transit, il faudrait savoir comment tu importes ces mises à jour: macros, manuellement ?
si c'est par macros, merci de communiquer le code et si c'est manuellement ,tu le dis, pour éviter de refaire tout le parcours de la colonne A, ce que fait actuellement le code que je t'ai proposé(il faudrait alors inscrire l'ancienne dernière ligne dans une cellule à la fin du code)
En ce qui concerne l'ajout de nouveaux transit, il faudrait savoir comment tu importes ces mises à jour: macros, manuellement ?
si c'est par macros, merci de communiquer le code et si c'est manuellement ,tu le dis, pour éviter de refaire tout le parcours de la colonne A, ce que fait actuellement le code que je t'ai proposé(il faudrait alors inscrire l'ancienne dernière ligne dans une cellule à la fin du code)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour Michel,
Mes données sont importées d'un fichier Txt produit par notre système (SAP). Ce fichier contient toutes les données à partir du début de l'année des opération. Ce sont les transactions de chaque semaine qui sont ajoutées hebdomadairement. Donc je ne fait pas qu'ajouter les nouvelles données de la semaine dernière mais plutôt, je crée un nouveau fichier complet.
Je converti le fichier .txt en .xlsm, appête le fichier en suprimant les espaces que SAP ajoute dans les cellules et applique une macro que j'ai bâtie. Cette macro fait de multiples choses au fichier.
Je suis toujours en mode amélioration et/ou ajout pour cette macro. Mon dernier ajout étant en colonne BI et BJ. Sauf que j'accroche à BI en ce moment.
Je n'ai pas eu la chance d'essayer ce que tu a proposé plus tôt. Je dois travailler sur autre chose pour l'instant.
D'ailleurs, je vais soumettre une nouvelle question pour un tout autre fichier. Si le coeur t'en dit.
Merci en core pour ton aide :-)
Mes données sont importées d'un fichier Txt produit par notre système (SAP). Ce fichier contient toutes les données à partir du début de l'année des opération. Ce sont les transactions de chaque semaine qui sont ajoutées hebdomadairement. Donc je ne fait pas qu'ajouter les nouvelles données de la semaine dernière mais plutôt, je crée un nouveau fichier complet.
Je converti le fichier .txt en .xlsm, appête le fichier en suprimant les espaces que SAP ajoute dans les cellules et applique une macro que j'ai bâtie. Cette macro fait de multiples choses au fichier.
Je suis toujours en mode amélioration et/ou ajout pour cette macro. Mon dernier ajout étant en colonne BI et BJ. Sauf que j'accroche à BI en ce moment.
Je n'ai pas eu la chance d'essayer ce que tu a proposé plus tôt. Je dois travailler sur autre chose pour l'instant.
D'ailleurs, je vais soumettre une nouvelle question pour un tout autre fichier. Si le coeur t'en dit.
Merci en core pour ton aide :-)