Répéter une macro jusqu'à la dernière ligne(changeante)
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 -
Bonjour,
J'ai enregistré cette petite macro:

'
Et j'aimerai qu'elle se répète jusqu'à la dernière ligne qui ne sera jamais la même d'une feuille à l'autre.
J'ai lu sur le site d'autres cas similaires au mien mais je n'y comprend rien. J'ai besoin d'aide.
Voici un échantillon avec lequel travailler.
https://www.cjoint.com/c/FBsnRlvDABE
Merci
eLise
J'ai enregistré cette petite macro:

Et j'aimerai qu'elle se répète jusqu'à la dernière ligne qui ne sera jamais la même d'une feuille à l'autre.
J'ai lu sur le site d'autres cas similaires au mien mais je n'y comprend rien. J'ai besoin d'aide.
Voici un échantillon avec lequel travailler.
https://www.cjoint.com/c/FBsnRlvDABE
Merci
eLise
A voir également:
- Répéter une macro jusqu'à la dernière ligne(changeante)
- Aller à la ligne excel - Guide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Supprimer dernière page word - Guide
- Partager photos en ligne - Guide
- Dernière version chrome - Accueil - Applications & Logiciels
8 réponses
Bonjour,
Tu rajoute au début dim a,b as integer
a = Cells.SpecialCells(xlCellTypeLastCell).Row
puis
au dessus de ton if : for b = 1 to a
et next b au dessus de end sub
b=1 c'est pour la ligne N°1, si ça commence à la 5, mets 5.
a +
Tu rajoute au début dim a,b as integer
a = Cells.SpecialCells(xlCellTypeLastCell).Row
puis
au dessus de ton if : for b = 1 to a
et next b au dessus de end sub
b=1 c'est pour la ligne N°1, si ça commence à la 5, mets 5.
a +
Bonjour
J'au du mal comprendre mais....
sans macro
tu écris ta formule =concatener(...etc dans B1
et tu fais un double clic sur le carré noir en bas et à droite de la cellule
J'au du mal comprendre mais....
sans macro
tu écris ta formule =concatener(...etc dans B1
et tu fais un double clic sur le carré noir en bas et à droite de la cellule
Merci pour le truc, mais ma macro ne s'arrête pas là. C'était la première partie.
La deuxième partie consiste à copier coller le résultat de la cellule concaténée dans la cellule suivante à droite et de cliquer à l'intérieur de cette cellule pour qu'elle devienne un nombre. Ce nombre se transforme en date (mois).
S'il existe une façon plus simple de transformer une donnée de texte comme celle-ci: 20150403 en date (mois), alors j'aimerais apprendre.
Merci
eLise
La deuxième partie consiste à copier coller le résultat de la cellule concaténée dans la cellule suivante à droite et de cliquer à l'intérieur de cette cellule pour qu'elle devienne un nombre. Ce nombre se transforme en date (mois).
S'il existe une façon plus simple de transformer une donnée de texte comme celle-ci: 20150403 en date (mois), alors j'aimerais apprendre.
Merci
eLise
Bonjour
peux être comme ça
A+
Maurice
peux être comme ça
Sub Test() Nlig = Cells(Rows.Count, 16).End(xlUp).Row Range("C2:C" & Nlig).FormulaLocal = "=CONCATENER(STXT(A2;1;4);""-"";STXT(A2;5;2);""-"";STXT(A2;7;2))" End Sub
A+
Maurice
Bonjour,
J'ai testé votre scripte et comme résultat j'ai obtenu une première cellule concaténée. Ça ne continue pas jusqu'à la dernière ligne (ligne 25 dans mon échantillon)
https://www.cjoint.com/c/FBsnRlvDABE
De plus, après la fonction de concatener, le résultat doit se copier dans la cellule adjacente et se transformer en nombre.
J'ai testé votre scripte et comme résultat j'ai obtenu une première cellule concaténée. Ça ne continue pas jusqu'à la dernière ligne (ligne 25 dans mon échantillon)
https://www.cjoint.com/c/FBsnRlvDABE
De plus, après la fonction de concatener, le résultat doit se copier dans la cellule adjacente et se transformer en nombre.
Bonjour
désoler j'ais mis 16 au lieux de 1
voila avec les Mois
A+
Maurice
désoler j'ais mis 16 au lieux de 1
voila avec les Mois
Sub Test() Nlig = Cells(Rows.Count, 1).End(xlUp).Row Range("C2:C" & Nlig).FormulaLocal = "=CONCATENER(STXT(A2;1;4);""-"";STXT(A2;5;2);""-"";STXT(A2;7;2))" For L = 2 To Nlig Mois = CDbl(Split(Range("C" & L), "-")(1)) Range("D" & L).Value = Format((DateSerial(2016, Mois, 1)), "mmmm") Next End Sub
A+
Maurice
Merci Maurice, ça semble vouloir fonctionner mais j'aimerais l'ajuster à mon fichier complet. L'échantillon n'avait que 2 colonnes je crois.
J'ai changé la cellule 'A2' pour 'S2' car c'est dans cette colonne que se trouve l'info.
Mais là je me demande quelle est la signification de:
Aussi le "C" devient "AJ" et le "D" devient "AK".
J'ai fait le changement mais ça bog. À quoi sert le 'L' dans ("C" & L) et dans ("D" & L) ?
Je crois que je dois ajuster quelque chose dans cette partie mais je ne suis pas certaine de ce que c'est.
J'ai changé la cellule 'A2' pour 'S2' car c'est dans cette colonne que se trouve l'info.
Mais là je me demande quelle est la signification de:
For L = 2 To Nlig
Mois = CDbl(Split(Range("C" & L), "-")(1))
Range("D" & L).Value = Format((DateSerial(2016, Mois, 1)), "mmmm")
Next
End Sub
Aussi le "C" devient "AJ" et le "D" devient "AK".
J'ai fait le changement mais ça bog. À quoi sert le 'L' dans ("C" & L) et dans ("D" & L) ?
Je crois que je dois ajuster quelque chose dans cette partie mais je ne suis pas certaine de ce que c'est.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonsoir
Voila j’espère que tu va comprendre
A+
Maurice
Voila j’espère que tu va comprendre
Sub Test1() DateEntry = 19 ' 1 egal colonne S For L = 2 To Cells(Rows.Count, DateEntry).End(xlUp).Row Range("AJ" & L).NumberFormat = "@" Range("AJ" & L).Value = Left(Cells(L, DateEntry), 4) & "-" & Mid(Cells(L, DateEntry), 5, 2) & "-" & Right(Cells(L, DateEntry), 2) Range("AK" & L).Value = Application.Proper(Format(DateSerial(Left(Cells(L, DateEntry), 4), Mid(Cells(L, DateEntry), 5, 2), Right(Cells(L, DateEntry), 2)), "mmmm")) Next End Sub
A+
Maurice
Wow! Ça fonctionne!
Maintenant, je sais qu'il y a une façon de programmer la macro pour qu'elle reconnaisse la dernière ligne de donnée (en "S") et qu'elle s'arrête là.
Est-ce que je me trompe en croyant que la macro que tu as créée cherche jusqu'à la dernière ligne du fichier, peu importe s'il y a des données dans la colonne "S"?
Je crois que Michel_m, plus bas, suggère quelque chose du genre avec:
Si c'est le cas, je ne suis pas certaine où l'insérer dans la macro que tu m'offres.
eLise
Maintenant, je sais qu'il y a une façon de programmer la macro pour qu'elle reconnaisse la dernière ligne de donnée (en "S") et qu'elle s'arrête là.
Est-ce que je me trompe en croyant que la macro que tu as créée cherche jusqu'à la dernière ligne du fichier, peu importe s'il y a des données dans la colonne "S"?
Je crois que Michel_m, plus bas, suggère quelque chose du genre avec:
.AutoFill Destination:=.Range("A1:A" & Derlig)
Si c'est le cas, je ne suis pas certaine où l'insérer dans la macro que tu m'offres.
eLise
Bonjour
S'il existe une façon plus simple de transformer une donnée de texte comme celle-ci: 20150403 en date (mois), alors j'aimerais apprendre.
Pour trouver le mois de la date écrit sous la forme aaaammjj
pour tes 15000 lignes , je te propose une macro rapide dans la matinée
Michel
S'il existe une façon plus simple de transformer une donnée de texte comme celle-ci: 20150403 en date (mois), alors j'aimerais apprendre.
Pour trouver le mois de la date écrit sous la forme aaaammjj
en formule
=TEXTE("1/"&STXT(A1;5;2);"mmmm")
en VBA
Dim Mois As String
Mois = Format("1 /" & Mid(Range("A1"), 5, 2), "mmmm")
Si tu veux le mois sous forme de nombre
Dim Mois as Byte
Mois=Mid(Range("A1"), 5, 2) * 1
pour tes 15000 lignes , je te propose une macro rapide dans la matinée
Michel
Bonjour,
Cette formule =TEXTE("1/"&STXT(A1;5;2);"mmmm") me donne comme résultat "janvier" plutôt qu'avril. Et ce pour toute les dates d'avril à décembre.
Si j'enlève le ' / ' comme ceci: =TEXTE("1"&STXT(A1;5;2);"mmmm"), j'ai "avril", mais encore une fois pour toutes les dates d'avril à décembre.
Y a quelque chose qui cloche.
eLise
Cette formule =TEXTE("1/"&STXT(A1;5;2);"mmmm") me donne comme résultat "janvier" plutôt qu'avril. Et ce pour toute les dates d'avril à décembre.
Si j'enlève le ' / ' comme ceci: =TEXTE("1"&STXT(A1;5;2);"mmmm"), j'ai "avril", mais encore une fois pour toutes les dates d'avril à décembre.
Y a quelque chose qui cloche.
eLise
Re,
le numéro du mois est indiqué en colonne B
macro valable pour toutes tes feuilles
Michel
le numéro du mois est indiqué en colonne B
macro valable pour toutes tes feuilles
Option Explicit
'-----------------------------
Sub Indiquer_mois()
Dim Derlig As Integer
Application.ScreenUpdating = False
With ActiveSheet
Derlig = .Columns("A").Find(what:="*", searchdirection:=xlPrevious).Row
With Range("B1")
.FormulaLocal = "=STXT(A1;5;2)*1"
.AutoFill Destination:=.Range("A1:A" & Derlig)
End With
End With
End Sub
Michel
Comme ta réponse m'inquiète (ca m'avait fait le coup ce matin...)
à part ça:
test de la macro sur 10000 lignes
durée: env 4 à 5/100 de secondes
http://www.cjoint.com/c/FBtnHNtmllO
à part ça:
test de la macro sur 10000 lignes
durée: env 4 à 5/100 de secondes
http://www.cjoint.com/c/FBtnHNtmllO
Il n'y a pas de "if" dans ma macro.
J'ai aussi besoin de précision quand à la disposition. Quand tu dis "au début", Est-ce juste avant "ActiveCell.FormulaR1C1" ?
Si possible, peux-tu ajouter une image de la macro entière avec tes modifications?
Un gros merci.
eLise
Essayez ça devrai marcher.
J'ai copier/coller ton script en remplaçant le mien et lorsque je l'active dans Visual Basic en utilisant la fonction pas-à-pas, ça bloque à:
Je reçois ce message: Erreur d'exécution '6': Dépassement de capacité