VBA EXCEL copier jusqu'a la fin du fichier
Résolu
Fou_Du_Guidon
Messages postés
320
Date d'inscription
Statut
Membre
Dernière intervention
-
xav3601 Messages postés 3289 Date d'inscription Statut Membre Dernière intervention -
xav3601 Messages postés 3289 Date d'inscription Statut Membre Dernière intervention -
Bonjour, je repost içi je pense que c'est plus approprier :-)
J'ai un petit souci avec EXCEL, je voudrai automatiser des actions avant la fermeture (beforeclose) car mes utilisateurs ne sont pas trés pousser niveau informatique donc faut les aider au maximum...Donc il faut que sa copie le contenu de 4 colonnes jusqu'à la fin de la feuille. J'ai trois colonnes de formules et une de date si on pouvait même faire une textbox qui demanderai la date et qui la copierai jusqu'à la fin sa sera cool mais ce n'est pas le principal. Donc voila je demande votre aide et je vous remercis d'avance.
J'ai un petit souci avec EXCEL, je voudrai automatiser des actions avant la fermeture (beforeclose) car mes utilisateurs ne sont pas trés pousser niveau informatique donc faut les aider au maximum...Donc il faut que sa copie le contenu de 4 colonnes jusqu'à la fin de la feuille. J'ai trois colonnes de formules et une de date si on pouvait même faire une textbox qui demanderai la date et qui la copierai jusqu'à la fin sa sera cool mais ce n'est pas le principal. Donc voila je demande votre aide et je vous remercis d'avance.
A voir également:
- VBA EXCEL copier jusqu'a la fin du fichier
- Fichier bin - Guide
- Comment réduire la taille d'un fichier - Guide
- Fichier epub - Guide
- Fichier rar - Guide
- Fichier .dat - Guide
60 réponses
voilà la solution, en tout cas j'espere \o/
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
letemps = Time ' heure du système.
ladate = Format(InputBox("Donner la date SVP...", "Saisie de la date", Date), "dd/mm/yyyy")
ladate = ladate & "_" & letemps
introw = 1
While ActiveSheet.Cells(introw, 1) <> ""
If ActiveSheet.Cells(introw, 23).Value = "" Then
'ActiveSheet.Cells().Value = "=RECHERCHEV(D2;'Commune CAD PDL'!A:B;2;FAUX)"
ActiveSheet.Cells(introw, 23).FormulaR1C1 = "=VLOOKUP(RC[-19],'Commune CAD PDL'!C[-22]:C[-21],2,FALSE)"
End If
If ActiveSheet.Cells(introw, 24).Value = "" Then
ActiveSheet.Cells(introw, 24).Value = ladate
End If
If ActiveSheet.Cells(introw, 25).Value = "" Then 'ActiveSheet.Cells(introw, 25).Value = "=RECHERCHEV(W2;'Communes BEX'!$A$2:$C$601;3;FAUX)"
ActiveSheet.Cells(introw, 25).FormulaR1C1 = "=VLOOKUP(RC[-2],'Communes BEX'!R2C1:R601C3,3,FALSE)"
End If
If ActiveSheet.Cells(introw, 34).Value = "" Then
'ActiveSheet.Cells(introw, 34).Value = "=SI(NBCAR(F2)<8;"*Non Référencé";SI(DROITE(F2;6)="000000";"Non Référencé";F2))"
ActiveSheet.Cells(introw, 34).FormulaR1C1 = "=IF(LEN(RC[-28])<8,""Non Référencé"",IF(RIGHT(RC[-28],6)=""000000"",""Non Référencé"",RC[-28]))"
End If
introw = introw + 1
Wend
End Sub
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
letemps = Time ' heure du système.
ladate = Format(InputBox("Donner la date SVP...", "Saisie de la date", Date), "dd/mm/yyyy")
ladate = ladate & "_" & letemps
introw = 1
While ActiveSheet.Cells(introw, 1) <> ""
If ActiveSheet.Cells(introw, 23).Value = "" Then
'ActiveSheet.Cells().Value = "=RECHERCHEV(D2;'Commune CAD PDL'!A:B;2;FAUX)"
ActiveSheet.Cells(introw, 23).FormulaR1C1 = "=VLOOKUP(RC[-19],'Commune CAD PDL'!C[-22]:C[-21],2,FALSE)"
End If
If ActiveSheet.Cells(introw, 24).Value = "" Then
ActiveSheet.Cells(introw, 24).Value = ladate
End If
If ActiveSheet.Cells(introw, 25).Value = "" Then 'ActiveSheet.Cells(introw, 25).Value = "=RECHERCHEV(W2;'Communes BEX'!$A$2:$C$601;3;FAUX)"
ActiveSheet.Cells(introw, 25).FormulaR1C1 = "=VLOOKUP(RC[-2],'Communes BEX'!R2C1:R601C3,3,FALSE)"
End If
If ActiveSheet.Cells(introw, 34).Value = "" Then
'ActiveSheet.Cells(introw, 34).Value = "=SI(NBCAR(F2)<8;"*Non Référencé";SI(DROITE(F2;6)="000000";"Non Référencé";F2))"
ActiveSheet.Cells(introw, 34).FormulaR1C1 = "=IF(LEN(RC[-28])<8,""Non Référencé"",IF(RIGHT(RC[-28],6)=""000000"",""Non Référencé"",RC[-28]))"
End If
introw = introw + 1
Wend
End Sub
B'jour, en faite en relisant sa le fait pas trop :-/ j'ai besoins d'aide pour le code, je suis un peu (beaucoup) nul en VBA...le C/C++ je dit pas mais là...je galére grave. En piquant à droite à gauche j'ai chopé des lignes de code mais aprés comment les imbriquer les unes aux autres...I don't know.Donc si quelqu'un pouvait me débloquer sa serai genti
Merci ;-)
Merci ;-)
Salut!
Faudrait que tu expliques la structure de ton fichier excel plus en détails, et aussi montrer ce que tu as déjà plus ou moins fait ^^
Faudrait que tu expliques la structure de ton fichier excel plus en détails, et aussi montrer ce que tu as déjà plus ou moins fait ^^
Bonjour,
j'ai lu et relu, mais j'ai du mal à suivre.
petite remarque ... tu sais de quoi tu parles mais moi pas.
Je crois comprendre que la source (par exemple Colonne A B C D ) il y aurait une Date en A et Qu'il faudrait
copier/coller la ou les lignes après une date définie (en colonne A peut-être) dans une autre feuille.
Est-ce cela?
Précise La source (colonne /nom de feuille)
précise le but (colonne /nom de feuille)
le format des données (valeurs ou formule)
Tu dis et j'essaye de t'aider.
A+
j'ai lu et relu, mais j'ai du mal à suivre.
petite remarque ... tu sais de quoi tu parles mais moi pas.
Je crois comprendre que la source (par exemple Colonne A B C D ) il y aurait une Date en A et Qu'il faudrait
copier/coller la ou les lignes après une date définie (en colonne A peut-être) dans une autre feuille.
Est-ce cela?
Précise La source (colonne /nom de feuille)
précise le but (colonne /nom de feuille)
le format des données (valeurs ou formule)
Tu dis et j'essaye de t'aider.
A+
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Ahh merci. Mon code n'a pas été sauvegarder hier soir ( oublie de ma part :-/ faut dire qu'il l'avais chercher...) donc je peux toujours retrouver la structure du beforeclose dans le worktruc , j'avais trouvé la forme du TANT QUE et aprés plein de code différent pour tester une cellule vide et copier/coller mais c'est tout.
Mon fichier se présente comme ca.
A B C D E ... W X Y ....AH avec le nombre de lignes de toutes les colonnes sont égal mais pas fixe.
W -> Formule RECHERCHEV
X -> Date à mettre (pour l'instant à la main même si j'aimerai le faire en Textbox)
Y -> Formule RECHERCHEV
AH -> Formule RECHERCHEV
Voila les 4 col que je rajoute, toutes les autres arrivent d'un vulgaire copier/coller.
Donc une fois que c'est copier pour l'instant je dois descendre les formules jusque en bas (pour moi sa me prend 2s mais pour les autres...sa prend facile la minute :-/ )
Je sais pas si sa t'aide pour le moment, mais merci.
Mon fichier se présente comme ca.
A B C D E ... W X Y ....AH avec le nombre de lignes de toutes les colonnes sont égal mais pas fixe.
W -> Formule RECHERCHEV
X -> Date à mettre (pour l'instant à la main même si j'aimerai le faire en Textbox)
Y -> Formule RECHERCHEV
AH -> Formule RECHERCHEV
Voila les 4 col que je rajoute, toutes les autres arrivent d'un vulgaire copier/coller.
Donc une fois que c'est copier pour l'instant je dois descendre les formules jusque en bas (pour moi sa me prend 2s mais pour les autres...sa prend facile la minute :-/ )
Je sais pas si sa t'aide pour le moment, mais merci.
Voila le fichier
http://www.cijoint.fr/cjlink.php?file=cj200907/cijkZBQcC4.xls
Je pense que sa aidera à la comprehension, donc comme je le disais j'ai préremplie certaine colonnes mais si on rajoute beaucoup d'enregistrement il faudra copier les formules et la date vers la fin du fichier.
http://www.cijoint.fr/cjlink.php?file=cj200907/cijkZBQcC4.xls
Je pense que sa aidera à la comprehension, donc comme je le disais j'ai préremplie certaine colonnes mais si on rajoute beaucoup d'enregistrement il faudra copier les formules et la date vers la fin du fichier.
j'ai lu 3 fois ....
et je comprends xav3601.... tu ne réponds pas aux questions.
je comprends Ca!
W -> Formule RECHERCHEV
X -> Date à mettre (pour l'instant à la main même si j'aimerai le faire en Textbox)
Y -> Formule RECHERCHEV
AH -> Formule RECHERCHEV
en fait tu voudrais écrire en "Automatique" les formules déjà existante en Wnn , la date en Xnn, et ..
à nouveau 2 formules en Ynn et AHnn ( nn représente le n° de ligne)
pour la date je conseille d'utiliser un inputbox plutôt qu'un textbox (ce sera plus souple).
sub test()
Dim ladate As Date
ladate = Format(InputBox("Donner la date SVP...", "Saisie de la date", Date), "dd/mm/yyyy")
Range("X1").Select
Selection.End(xlDown).Select 'dernière ligne pleine
ActiveCell.Offset(1, 0).Select ' ligne suivante ou première ligne vide
' il ne doit pas y avoir de "vide dans les dates"
activecell.value=ladate
' tu vas en W ( recul de 1 colonne )
activecell.offset(0,-1).select
ActiveCell.FormulaR1C1 = " recopie ici la formule de rechercheV "
'tu vas en Y
activecell.offset(0,2).select
ActiveCell.FormulaR1C1 = " recopie ici la formule en utilisant l'enregistreur de macro.."
' tu es en Y tu vas en AH
activecell.offset(0,9).select
ActiveCell.FormulaR1C1 = " recopie ici la formule en utilisant l'enregistreur de macro.."
' ensuite tu peux sauvegarder
' Activeworkbook.save
end sub
et je comprends xav3601.... tu ne réponds pas aux questions.
je comprends Ca!
W -> Formule RECHERCHEV
X -> Date à mettre (pour l'instant à la main même si j'aimerai le faire en Textbox)
Y -> Formule RECHERCHEV
AH -> Formule RECHERCHEV
en fait tu voudrais écrire en "Automatique" les formules déjà existante en Wnn , la date en Xnn, et ..
à nouveau 2 formules en Ynn et AHnn ( nn représente le n° de ligne)
pour la date je conseille d'utiliser un inputbox plutôt qu'un textbox (ce sera plus souple).
sub test()
Dim ladate As Date
ladate = Format(InputBox("Donner la date SVP...", "Saisie de la date", Date), "dd/mm/yyyy")
Range("X1").Select
Selection.End(xlDown).Select 'dernière ligne pleine
ActiveCell.Offset(1, 0).Select ' ligne suivante ou première ligne vide
' il ne doit pas y avoir de "vide dans les dates"
activecell.value=ladate
' tu vas en W ( recul de 1 colonne )
activecell.offset(0,-1).select
ActiveCell.FormulaR1C1 = " recopie ici la formule de rechercheV "
'tu vas en Y
activecell.offset(0,2).select
ActiveCell.FormulaR1C1 = " recopie ici la formule en utilisant l'enregistreur de macro.."
' tu es en Y tu vas en AH
activecell.offset(0,9).select
ActiveCell.FormulaR1C1 = " recopie ici la formule en utilisant l'enregistreur de macro.."
' ensuite tu peux sauvegarder
' Activeworkbook.save
end sub
http://www.cijoint.fr/cjlink.php?file=cj200907/cijXO2KLnD.xls
J'ai fait un fichier tel qu'il serai actuellement (en allégé) les colonnes avant W sont remplie par un copier/coller.
on peut voir que les autres ne sont pas remplie et c'est ce qu'il faut automatiser, que les colonnes désirées soient aussi remplies. J'éspère avoir été compris :-/
Pour ton code Bidouilleu_R c'est la inputBox ? je travail sur la compréhension actuelement.
J'ai fait un fichier tel qu'il serai actuellement (en allégé) les colonnes avant W sont remplie par un copier/coller.
on peut voir que les autres ne sont pas remplie et c'est ce qu'il faut automatiser, que les colonnes désirées soient aussi remplies. J'éspère avoir été compris :-/
Pour ton code Bidouilleu_R c'est la inputBox ? je travail sur la compréhension actuelement.
Je crois avoir compris...
Ta colonne A est rempli, et tu voudrais qu'on fasse un copier coller des formules présentes dans les cellule w1 x1 y1 ah1 dans les cellules en dessous jusqu'à la derniere ligne rempli dans la colonne A?
Ta colonne A est rempli, et tu voudrais qu'on fasse un copier coller des formules présentes dans les cellule w1 x1 y1 ah1 dans les cellules en dessous jusqu'à la derniere ligne rempli dans la colonne A?
OUUUIII c'est ca :D YES! J'ai un petit souci avec ton code Bidouilleu_R. Avec la derniére ligne où je doit mettre la formule RECHERCHEV j'ai une erreur.
Comment fonctionne l'enregistreur de macro?
Comment fonctionne l'enregistreur de macro?
Ok ba alors si c'est rien de plus simple pour ta macro ^^
introw=1
Do until activesheet.cells(1, introw) <> ""
Activesheet.cells(25,introw)= formule
Activesheet.cells(24,introw)= formule
Activesheet.cells(23,introw)= formule
Activesheet.cells(,introw)= formule
introw=introw + 1
Loop
introw=1
Do until activesheet.cells(1, introw) <> ""
Activesheet.cells(25,introw)= formule
Activesheet.cells(24,introw)= formule
Activesheet.cells(23,introw)= formule
Activesheet.cells(,introw)= formule
introw=introw + 1
Loop
OK donc combiner la inputBox avec ton code sa pourrai donner sa?
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim ladate As Date
ladate = Format(InputBox("Donner la date SVP...", "Saisie de la date", Date), "dd/mm/yyyy")
Range("X1").Select
introw=1
Do until activesheet.cells(1, introw) <> ""
Activesheet.cells(25,introw)= formule
Activesheet.cells(24,introw)= ladate
Activesheet.cells(23,introw)= formule
Activesheet.cells(,introw)= formule
introw=introw + 1
Loop
End Sub
Récapitulation sa met la Formule pour W1 , la date renseigner dans la box dans X1, la formule pour Y1 et la formule pour AH1 puis sa passe à la deuxiéme ligne et rebelote...
Non?!?
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim ladate As Date
ladate = Format(InputBox("Donner la date SVP...", "Saisie de la date", Date), "dd/mm/yyyy")
Range("X1").Select
introw=1
Do until activesheet.cells(1, introw) <> ""
Activesheet.cells(25,introw)= formule
Activesheet.cells(24,introw)= ladate
Activesheet.cells(23,introw)= formule
Activesheet.cells(,introw)= formule
introw=introw + 1
Loop
End Sub
Récapitulation sa met la Formule pour W1 , la date renseigner dans la box dans X1, la formule pour Y1 et la formule pour AH1 puis sa passe à la deuxiéme ligne et rebelote...
Non?!?
ma colonne X correspond à une date pas une formule. Et Bidouilleur ma je pense donné le code d'une inputbox donc ladate doit correspondre à la variable de stockage de la box. On renseigne une fois la date et sa la copie jusqu'a la fin. Par contre si je rajoute des lignes et que précédamment tous était correctement remplies est-ce que sa va recopier encore les formules?
J'ai une erreur de compilation je pense que c'est à cause des " mais je ne sias pas réglé le problème.
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim ladate As Date
ladate = Format(InputBox("Donner la date SVP...", "Saisie de la date", Date), "dd/mm/yyyy")
Range("X1").Select
Selection.End(xlDown).Select 'dernière ligne pleine
ActiveCell.Offset(1, 0).Select ' ligne suivante ou première ligne vide
' il ne doit pas y avoir de "vide dans les dates"
ActiveCell.Value = ladate
introw = 1
Do Until ActiveSheet.Cells(1, introw) <> ""
ActiveSheet.Cells(25, introw) = "RECHERCHEV(D2;'Commune CAD PDL'!A:B;2;FAUX)"
ActiveSheet.Cells(24, introw) = ActiveSheet.Cells(24, introw - 1)
ActiveSheet.Cells(23, introw) = "=RECHERCHEV(W2;'Communes BEX'!$A$2:$C$601;3;FAUX)"
->>>ActiveSheet.Cells(, introw) = "=SI(NBCAR(F2)<8;"Non Référencé";SI(DROITE(F2;6)="000000";"Non Référencé";F2))"
introw = introw + 1
Loop
End Sub
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim ladate As Date
ladate = Format(InputBox("Donner la date SVP...", "Saisie de la date", Date), "dd/mm/yyyy")
Range("X1").Select
Selection.End(xlDown).Select 'dernière ligne pleine
ActiveCell.Offset(1, 0).Select ' ligne suivante ou première ligne vide
' il ne doit pas y avoir de "vide dans les dates"
ActiveCell.Value = ladate
introw = 1
Do Until ActiveSheet.Cells(1, introw) <> ""
ActiveSheet.Cells(25, introw) = "RECHERCHEV(D2;'Commune CAD PDL'!A:B;2;FAUX)"
ActiveSheet.Cells(24, introw) = ActiveSheet.Cells(24, introw - 1)
ActiveSheet.Cells(23, introw) = "=RECHERCHEV(W2;'Communes BEX'!$A$2:$C$601;3;FAUX)"
->>>ActiveSheet.Cells(, introw) = "=SI(NBCAR(F2)<8;"Non Référencé";SI(DROITE(F2;6)="000000";"Non Référencé";F2))"
introw = introw + 1
Loop
End Sub
Je suis obligé de vous laisser mais je vois que vous avez bien progréssé.
au post 11 tu dis
Comment fonctionne l'enregistreur de macro?
en excel 2003 : outils.macro/enregistrer une macro appelle là "toto"
click sur une formule valide en appuyant sur entrée passe à la formule suivante.
quand tu as fini outils/macro/arrêter l'enregistreur.
Alt F11 (il y a un nouveau module avec la macro toto) tu trouveras la syntaxe.
Je vous laisse.
Bon courage.
au post 11 tu dis
Comment fonctionne l'enregistreur de macro?
en excel 2003 : outils.macro/enregistrer une macro appelle là "toto"
click sur une formule valide en appuyant sur entrée passe à la formule suivante.
quand tu as fini outils/macro/arrêter l'enregistreur.
Alt F11 (il y a un nouveau module avec la macro toto) tu trouveras la syntaxe.
Je vous laisse.
Bon courage.
Autre petite question ^^ j'ai besoin de l'heure aussi. Comment je fait? j'ai essayer de rajouter le format derriére la date mais errer de compil aussi.