Répéter une macro jusqu'à la dernière ligne(changeante)
Résolu/Fermé
BILLING
Messages postés
162
Date d'inscription
vendredi 4 mai 2012
Statut
Membre
Dernière intervention
31 mars 2021
-
18 févr. 2016 à 14:46
BILLING Messages postés 162 Date d'inscription vendredi 4 mai 2012 Statut Membre Dernière intervention 31 mars 2021 - 19 févr. 2016 à 15:36
BILLING Messages postés 162 Date d'inscription vendredi 4 mai 2012 Statut Membre Dernière intervention 31 mars 2021 - 19 févr. 2016 à 15:36
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
- Site de vente en ligne particulier - Guide
- Partager photos en ligne - Guide
- Supprimer dernière page word - Guide
8 réponses
Pierre1310
Messages postés
8564
Date d'inscription
lundi 21 décembre 2015
Statut
Membre
Dernière intervention
21 juillet 2020
649
18 févr. 2016 à 14:54
18 févr. 2016 à 14:54
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 +
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
18 févr. 2016 à 17:26
18 févr. 2016 à 17:26
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
BILLING
Messages postés
162
Date d'inscription
vendredi 4 mai 2012
Statut
Membre
Dernière intervention
31 mars 2021
48
18 févr. 2016 à 17:38
18 févr. 2016 à 17:38
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
Pierre1310
Messages postés
8564
Date d'inscription
lundi 21 décembre 2015
Statut
Membre
Dernière intervention
21 juillet 2020
649
18 févr. 2016 à 17:44
18 févr. 2016 à 17:44
Pour la cellule, Clic droit et format date il me semble.$
La macro ne s'arrête pas car il doit répéter un traitement long.
Vous avez combien de lignes?
La macro ne s'arrête pas car il doit répéter un traitement long.
Vous avez combien de lignes?
BILLING
Messages postés
162
Date d'inscription
vendredi 4 mai 2012
Statut
Membre
Dernière intervention
31 mars 2021
48
>
Pierre1310
Messages postés
8564
Date d'inscription
lundi 21 décembre 2015
Statut
Membre
Dernière intervention
21 juillet 2020
18 févr. 2016 à 17:57
18 févr. 2016 à 17:57
Le nombre de lignes sera variable. Pourrait être entre 5000 et 15000.
Pierre1310
Messages postés
8564
Date d'inscription
lundi 21 décembre 2015
Statut
Membre
Dernière intervention
21 juillet 2020
649
18 févr. 2016 à 19:23
18 févr. 2016 à 19:23
Cela explique que ça prenne du temps mais ça marche ne vous inquiétez pas.
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
BILLING
Messages postés
162
Date d'inscription
vendredi 4 mai 2012
Statut
Membre
Dernière intervention
31 mars 2021
48
18 févr. 2016 à 19:13
18 févr. 2016 à 19:13
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
BILLING
Messages postés
162
Date d'inscription
vendredi 4 mai 2012
Statut
Membre
Dernière intervention
31 mars 2021
48
18 févr. 2016 à 21:35
18 févr. 2016 à 21:35
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
BILLING
Messages postés
162
Date d'inscription
vendredi 4 mai 2012
Statut
Membre
Dernière intervention
31 mars 2021
48
19 févr. 2016 à 14:05
19 févr. 2016 à 14:05
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
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
Modifié par michel_m le 19/02/2016 à 08:53
Modifié par michel_m le 19/02/2016 à 08:53
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
BILLING
Messages postés
162
Date d'inscription
vendredi 4 mai 2012
Statut
Membre
Dernière intervention
31 mars 2021
48
19 févr. 2016 à 13:44
19 févr. 2016 à 13:44
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
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
Modifié par michel_m le 19/02/2016 à 09:25
Modifié par michel_m le 19/02/2016 à 09:25
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
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
19 févr. 2016 à 14:18
19 févr. 2016 à 14:18
RE,
pourtant....
http://www.cjoint.com/c/FBtnrecKlWO
as tu essayé la macro ?
je repasse dans env. 2 heures
pourtant....
http://www.cjoint.com/c/FBtnrecKlWO
as tu essayé la macro ?
je repasse dans env. 2 heures
BILLING
Messages postés
162
Date d'inscription
vendredi 4 mai 2012
Statut
Membre
Dernière intervention
31 mars 2021
48
>
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
19 févr. 2016 à 14:34
19 févr. 2016 à 14:34
Je viens de télécharger le fichier cjoint et le mois de janvier est inscrit pour chaque date. :-/
Je me demande si nos paramètres Excel sont différents et causent des résultats différents.
Je me demande si nos paramètres Excel sont différents et causent des résultats différents.
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
19 févr. 2016 à 14:34
19 févr. 2016 à 14:34
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
BILLING
Messages postés
162
Date d'inscription
vendredi 4 mai 2012
Statut
Membre
Dernière intervention
31 mars 2021
48
19 févr. 2016 à 15:10
19 févr. 2016 à 15:10
Ça bog encore :-(
Ça bog à :
Ce message s'affiche:
"Erreur d'exécution '1004':
Erreur définie pas l'application ou par l'objet"
Ça bog à :
.FormulaLocal = "=STXT(A1;5;2)*1"
Ce message s'affiche:
"Erreur d'exécution '1004':
Erreur définie pas l'application ou par l'objet"
BILLING
Messages postés
162
Date d'inscription
vendredi 4 mai 2012
Statut
Membre
Dernière intervention
31 mars 2021
48
19 févr. 2016 à 15:16
19 févr. 2016 à 15:16
Eureka! J'ai compris ce qu'il n'allait pas.
Je devais changer les points virgules de la macro par des virgules.
Maintenant ta macro fonctionne très bien et rapidement.
Un gros merci! :-)
eLise
Je devais changer les points virgules de la macro par des virgules.
Maintenant ta macro fonctionne très bien et rapidement.
Un gros merci! :-)
eLise
BILLING
Messages postés
162
Date d'inscription
vendredi 4 mai 2012
Statut
Membre
Dernière intervention
31 mars 2021
48
19 févr. 2016 à 15:36
19 févr. 2016 à 15:36
Non, finalement je me suis trompée. Je n'obtiens pas les bons mois. Pourtant j'aurais juré avoir vu les bons mois s'afficher en premier.
Maintenant tout ce que j'obtiens comme mois sont: janvier, février, mars, avril puis janvier encore, peu importe les chiffres dans A.
Maintenant tout ce que j'obtiens comme mois sont: janvier, février, mars, avril puis janvier encore, peu importe les chiffres dans A.
18 févr. 2016 à 17:02
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
18 févr. 2016 à 17:05
18 févr. 2016 à 17:20
18 févr. 2016 à 17:30
Essayez ça devrai marcher.
18 févr. 2016 à 18:12
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é