Excel - Macro: tenir compte de la dernière ligne d'un tableau
Résolu
BILLING
Messages postés
162
Date d'inscription
Statut
Membre
Dernière intervention
-
BILLING Messages postés 162 Date d'inscription Statut Membre Dernière intervention -
BILLING Messages postés 162 Date d'inscription Statut Membre Dernière intervention -
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
- Déplacer colonne excel - Guide
- Si ou 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 :-)