Excel - Macro: tenir compte de la dernière ligne d'un tableau
Résolu/Fermé
BILLING
Messages postés
162
Date d'inscription
vendredi 4 mai 2012
Statut
Membre
Dernière intervention
31 mars 2021
-
5 nov. 2012 à 16:29
BILLING Messages postés 162 Date d'inscription vendredi 4 mai 2012 Statut Membre Dernière intervention 31 mars 2021 - 6 nov. 2012 à 16:54
BILLING Messages postés 162 Date d'inscription vendredi 4 mai 2012 Statut Membre Dernière intervention 31 mars 2021 - 6 nov. 2012 à 16:54
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
- Si et excel - Guide
- Word et excel gratuit - Guide
- Aller à la ligne excel - Guide
5 réponses
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 311
5 nov. 2012 à 17:07
5 nov. 2012 à 17:07
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
BILLING
Messages postés
162
Date d'inscription
vendredi 4 mai 2012
Statut
Membre
Dernière intervention
31 mars 2021
48
5 nov. 2012 à 18:01
5 nov. 2012 à 18:01
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_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 311
Modifié par michel_m le 5/11/2012 à 18:17
Modifié par michel_m le 5/11/2012 à 18:17
si tu connais la réponse, pourquoi poser la question....
sur 7500 lignes (tu ne l'avais indiqué et ca change complètement la manière de résoudre le problème) il te faut utiliser une variable-tableau
les transit n° sont ils toujours regroupés ?
D'autre part la colonne BI est occupée ,
Tu dis...
sur 7500 lignes (tu ne l'avais indiqué et ca change complètement la manière de résoudre le problème) il te faut utiliser une variable-tableau
les transit n° sont ils toujours regroupés ?
D'autre part la colonne BI est occupée ,
Tu dis...
BILLING
Messages postés
162
Date d'inscription
vendredi 4 mai 2012
Statut
Membre
Dernière intervention
31 mars 2021
48
5 nov. 2012 à 18:39
5 nov. 2012 à 18:39
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à.
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 311
5 nov. 2012 à 19:35
5 nov. 2012 à 19:35
OK on verra ça demain à la fraiche
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 311
5 nov. 2012 à 23:31
5 nov. 2012 à 23:31
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
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 311
6 nov. 2012 à 08:23
6 nov. 2012 à 08:23
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
BILLING
Messages postés
162
Date d'inscription
vendredi 4 mai 2012
Statut
Membre
Dernière intervention
31 mars 2021
48
6 nov. 2012 à 16:54
6 nov. 2012 à 16:54
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 :-)