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   -
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.
A voir également:

60 réponses

Fou_Du_Guidon Messages postés 320 Date d'inscription   Statut Membre Dernière intervention   38
 
>< oops j'ai donc mis le chiffre, rajouter l'heure mais j'ai toutjours un erreur de compilation sur la ligne

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim letemps As Time
letemps = Time ' heure du système.
Dim ladate As Date
ladate = Format(InputBox("Donner la date et l'heure 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"
ladate = ladate & "_" & letemps
ActiveCell.Value = ladate

introw = 1

Do Until ActiveSheet.Cells(1, introw) <> ""

ActiveSheet.Cells(23, introw) = "RECHERCHEV(D2;'Commune CAD PDL'!A:B;2;FAUX)"
ActiveSheet.Cells(24, introw) = ActiveSheet.Cells(24, introw - 1)
ActiveSheet.Cells(25, introw) = "=RECHERCHEV(W2;'Communes BEX'!$A$2:$C$601;3;FAUX)"
ActiveSheet.Cells(34, 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
0
xav3601 Messages postés 3289 Date d'inscription   Statut Membre Dernière intervention   311
 
J'en déduis que c'est sur la ligne suivante:
ActiveSheet.Cells(34, introw) = "=SI(NBCAR(F2)<8;"Non Référencé";SI(DROITE(F2;6)="000000";"Non Référencé";F2))"

Que tu as une erreur?
C'est quoi l'erreur?
0
Fou_Du_Guidon Messages postés 320 Date d'inscription   Statut Membre Dernière intervention   38
 
Erreur compilation
expression attendue
0
xav3601 Messages postés 3289 Date d'inscription   Statut Membre Dernière intervention   311
 
Essaye en remplacant ta forume par:
"test"

voir si ca viens de ta formule ^^
0
Fou_Du_Guidon Messages postés 320 Date d'inscription   Statut Membre Dernière intervention   38
 
Donc sa vient bien de la formule et mais en recompilant une autre apparait sur la ligne Dim letemps As Time avec type définie par l'utili.. non définie :-/
0
xav3601 Messages postés 3289 Date d'inscription   Statut Membre Dernière intervention   311
 
Tu peux la virer cette ligne, comme celle ou tu définis ta variable date!
Y'en a pas besoin ;)
0
Fou_Du_Guidon Messages postés 320 Date d'inscription   Statut Membre Dernière intervention   38
 
YEAHHHH sa fonctionne!!!!...presque:-( . Sa fonctionne juste pour la date. Les 3 formules ne sont pas copier..
0
xav3601 Messages postés 3289 Date d'inscription   Statut Membre Dernière intervention   311
 
Essaye ca:

Activesheet.Cells().value=...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Fou_Du_Guidon Messages postés 320 Date d'inscription   Statut Membre Dernière intervention   38
 
Euh..je le met ou? Sur la boucle ou avant? Normalement la boucle devrait commencer ?
0
xav3601 Messages postés 3289 Date d'inscription   Statut Membre Dernière intervention   311
 
Non tu remplaces la syntaxe de la ligne ou tu doit mettre les résultat par cette syntaxe
0
Fou_Du_Guidon Messages postés 320 Date d'inscription   Statut Membre Dernière intervention   38
 
OULA toutes les cellules sont remplies avec la date et l'heure quand je dit toutes c'est toutes 65355 et quelque lignes, toutes les colonnes...
0
xav3601 Messages postés 3289 Date d'inscription   Statut Membre Dernière intervention   311
 
loool
Remet tous le code.
0
Fou_Du_Guidon Messages postés 320 Date d'inscription   Statut Membre Dernière intervention   38
 
J'avoue j'ai sourie et j'étais content lorsque le traitement à commencer , mais j'ai vite déchanté ^^

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)


letemps = Time ' heure du système.

ladate = Format(InputBox("Donner la date et l'heure 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"
ladate = ladate & "_" & letemps
ActiveCell.Value = ladate

introw = 1

Do Until ActiveSheet.Cells(1, introw) <> ""

ActiveSheet.Cells(23, introw) = "RECHERCHEV(D2;'Commune CAD PDL'!A:B;2;FAUX)"
ActiveSheet.Cells(24, introw) = ActiveSheet.Cells(24, introw - 1)
ActiveSheet.Cells(25, introw) = "=RECHERCHEV(W2;'Communes BEX'!$A$2:$C$601;3;FAUX)"
ActiveSheet.Cells(34, introw) = "test"

introw = introw + 1
Loop

End Sub
0
xav3601 Messages postés 3289 Date d'inscription   Statut Membre Dernière intervention   311
 
Essaye ce code:

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)


letemps = Time ' heure du système.

ladate = Format(InputBox("Donner la date et l'heure SVP...", "Saisie de la date", Date), "dd/mm/yyyy")

ladate = ladate & "_" & letemps

introw = 1

Do Until ActiveSheet.Cells(1, introw) <> ""

ActiveSheet.Cells(23, introw) = "RECHERCHEV(D2;'Commune CAD PDL'!A:B;2;FAUX)"
ActiveSheet.Cells(24, introw) = ActiveSheet.Cells(24, introw - 1)
ActiveSheet.Cells(25, introw) = "=RECHERCHEV(W2;'Communes BEX'!$A$2:$C$601;3;FAUX)"
ActiveSheet.Cells(34, introw) = "test"

introw = introw + 1
Loop

End Sub
0
Fou_Du_Guidon Messages postés 320 Date d'inscription   Statut Membre Dernière intervention   38
 
Rien ne se passe...
0
xav3601 Messages postés 3289 Date d'inscription   Statut Membre Dernière intervention   311
 
Essaye ce code:

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)


letemps = Time ' heure du système.

ladate = Format(InputBox("Donner la date et l'heure SVP...", "Saisie de la date", Date), "dd/mm/yyyy")

ladate = ladate & "_" & letemps

introw = 1

Do Until ActiveSheet.Cells(1, introw) <> ""

ActiveSheet.Cells(23, introw).value = "RECHERCHEV(D2;'Commune CAD PDL'!A:B;2;FAUX)"
ActiveSheet.Cells(24, introw).value = ActiveSheet.Cells(24, introw - 1)
ActiveSheet.Cells(25, introw).value = "=RECHERCHEV(W2;'Communes BEX'!$A$2:$C$601;3;FAUX)"
ActiveSheet.Cells(34, introw).value = "test"

introw = introw + 1
Loop

End Sub
0
Fou_Du_Guidon Messages postés 320 Date d'inscription   Statut Membre Dernière intervention   38
 
Même chose
0
xav3601 Messages postés 3289 Date d'inscription   Statut Membre Dernière intervention   311
 
Deroule le en pas par pas pour voir ce qu'il fait
0
Fou_Du_Guidon Messages postés 320 Date d'inscription   Statut Membre Dernière intervention   38
 
Il y a la Box qui s'affiche puis un petit coup de sablier et pis c'est tout. Je vois pas comment exécuter en pas à pas.
0
Bidouilleu_R Messages postés 1181 Date d'inscription   Statut Membre Dernière intervention   295
 
click dans la macro puis f8
tu verras la ligne surlignée en jaune avant d'être executé.
0
Fou_Du_Guidon Messages postés 320 Date d'inscription   Statut Membre Dernière intervention   38
 
Il faudrai que je sauvegarde ma macro dans se cas. Comment faire je n'arrive pas à sauvegarder de macro dans le Workbook.
0
xav3601 Messages postés 3289 Date d'inscription   Statut Membre Dernière intervention   311
 
Je suis con xD
Comme ca ca marche:

Private Sub macro()


letemps = Time ' heure du système.

ladate = Format(InputBox("Donner la date et l'heure SVP...", "Saisie de la date", Date), "dd/mm/yyyy")

ladate = ladate & "_" & letemps

introw = 1


Do Until ActiveSheet.Cells(introw, 1).Value = ""

ActiveSheet.Cells(introw, 23) = "test"
ActiveSheet.Cells(introw, 24) = "test"
ActiveSheet.Cells(introw, 25) = "test"
ActiveSheet.Cells(introw, 34) = "test"

introw = introw + 1
Loop

End Sub
0
Bidouilleu_R Messages postés 1181 Date d'inscription   Statut Membre Dernière intervention   295
 
essaye ça !Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)


letemps = Time ' heure du système.

ladate = Format(InputBox("Donner la date et l'heure SVP...", "Saisie de la date", Date), "dd/mm/yyyy")

ladate = ladate & "_" & letemps

introw = 1



While ActiveSheet.Cells(1, introw) <> ""

ActiveSheet.Cells(23, introw).Value = "RECHERCHEV(D2;'Commune CAD PDL'!A:B;2;FAUX)"
ActiveSheet.Cells(24, introw).Value = ActiveSheet.Cells(24, introw - 1)
ActiveSheet.Cells(25, introw).Value = "=RECHERCHEV(W2;'Communes BEX'!$A$2:$C$601;3;FAUX)"
ActiveSheet.Cells(34, introw).Value = "test"

introw = introw + 1
Wend
end sub
0
Bidouilleu_R Messages postés 1181 Date d'inscription   Statut Membre Dernière intervention   295
 
Pardon les post se sont croisés
0
xav3601 Messages postés 3289 Date d'inscription   Statut Membre Dernière intervention   311
 
oui ^^
Le mien marche, mais faut juste modifier l'en tête de la macro avec celle du tien ;)
0
Fou_Du_Guidon Messages postés 320 Date d'inscription   Statut Membre Dernière intervention   38
 
Sa à fonctionner, mais sa à remplacer toutes mes cellules par "test" il va bien jusqu'à la fin , mais toute la colonnes est remplacer par test.
0
xav3601 Messages postés 3289 Date d'inscription   Statut Membre Dernière intervention   311
 
Ben voui c normal....
Faut quand même le lire un peu le truc qu'on te file desfois -_-'

j'ai mis test dans toutes les cases, donc tu as juste à re remplacer!
0
Bidouilleu_R Messages postés 1181 Date d'inscription   Statut Membre Dernière intervention   295
 
Exact j'ai fait un copier coller de l'entête précédente.
C'est ta méthode qui est la bonne.
0
Fou_Du_Guidon Messages postés 320 Date d'inscription   Statut Membre Dernière intervention   38
 
Pour le code de bidouille -> erreur 1004 sur cette ligne
ActiveSheet.Cells(24, introw).Value = ActiveSheet.Cells(24, introw - 1)
Bon je vous remercie pour l'instant de votre aide mais la je vais manger bonne app à vous deux et à tout à l'heure.
0
Fou_Du_Guidon Messages postés 320 Date d'inscription   Statut Membre Dernière intervention   38
 
Oui oui je sais que sa met "test" mais sa ma remplacer aussi ce qui été déjà remplie, c'est pour ca!
0
xav3601 Messages postés 3289 Date d'inscription   Statut Membre Dernière intervention   311
 
Ah ba oui ca ecris dans toute les cases de la colonne!
c'est ce que t'as demandé...
0
Fou_Du_Guidon Messages postés 320 Date d'inscription   Statut Membre Dernière intervention   38
 
Lol on c'est mal compris je pense, il faut que ca remplisse les cellules vides jusqu'à la derniére ligne mais sans remplacer les précédent enregistrement ni l'entete de colonne
0
xav3601 Messages postés 3289 Date d'inscription   Statut Membre Dernière intervention   311
 
Ah ba voila si tu le dis pas aussi -_-'

pour ca il faut que tu mette un if autou de chaque ligne activesheet...

if activesheet.cells().value = ""
activesheet.cells().value="formule"
end if
0