VBA copier/coller valeurs d'une feuille vers nouveau classeur
Needhelp
-
Needhelp -
Needhelp -
Bonjour à tous,
Je souhaiterai copier/coller les valeurs d'une feuille d'un fichier source (A1:N10000), vers un nouveau classeur avec une seule feuille, puis l'enregistrer sous un format "entité_date_heure_initiales" au format .csv. Vous l'aurez compris je ne suis pas un expert en VBA.. Grand merci pour votre aide.
J'imagine que mon code est bourré de faute de syntaxe, je vous remercie pour votre aide.
Je souhaiterai copier/coller les valeurs d'une feuille d'un fichier source (A1:N10000), vers un nouveau classeur avec une seule feuille, puis l'enregistrer sous un format "entité_date_heure_initiales" au format .csv. Vous l'aurez compris je ne suis pas un expert en VBA.. Grand merci pour votre aide.
Dim WB As Workbook Dim Username As String Dim BU As Range Sheets("database CSV").Select Range("A1:N10000").Select 'Range("A4").Activate Selection.Copy WB = Workbooks.Add ActiveSheet.Paste 'Demander les initiales de l'utilisateur' Username = Application.inputbox(" Vos initiales ? ", Type:=2) 'Reprendre les initiales pour les insérer dans titre de sauvegarde' If Username = Empty Then MsgBox Prompt:="Vous ne vous êtes pas identifiez" End If 'Prendre la BU BU = Worksheets("JT_CASH_ALLOCATION").Range("A3").Select 'Enregistrer sous avec format sauvegarde' ChDir "C:\Users\...\..." WB.SaveAs Filename:="BU" & "_" & Format(Date, "ddmmyyyy") & "_" & Format(Time, "hhmm") & "_" & Username, FileFormat:=xlCSVMSDOS _ , CreateBackup:=False 'Message de validation de sauvegarde' MsgBox "Le document a bien été enrégistré", vbOKOnly
J'imagine que mon code est bourré de faute de syntaxe, je vous remercie pour votre aide.
A voir également:
- VBA copier/coller valeurs d'une feuille vers nouveau classeur
- Historique copier coller - Guide
- Copier coller pdf - Guide
- Copier-coller - Accueil - Informatique
- Style d'écriture a copier coller - Guide
- Comment copier une vidéo youtube - Guide
2 réponses
Bonjour,
Bon début.
Mes premières remarques :
1- La définition d'objets tels que Workbook ou Range se fait avec l'instruction "set"
set WB = Workbooks.Add
set BU = Worksheets("JT_CASH_ALLOCATION").Range("A3")
2- si ta BU se trouve sur ton classeur de départ, il faut la référencer par rapport à ce classeur et donc le définir au début de ta procédure comme ceci
set Wdépart = ActiveWorkbook
puis
set BU = Wdépart.Worksheets("JT_CASH_ALLOCATION").Range("A3")
et
WB.SaveAs Filename:=BU.Value & ...
3- "Vous ne vous êtes pas identifié"
4- A noter que le nom d'utilisateur est donné par :
nom_utilisateur = application.UserName
--
Bon début.
Mes premières remarques :
1- La définition d'objets tels que Workbook ou Range se fait avec l'instruction "set"
set WB = Workbooks.Add
set BU = Worksheets("JT_CASH_ALLOCATION").Range("A3")
2- si ta BU se trouve sur ton classeur de départ, il faut la référencer par rapport à ce classeur et donc le définir au début de ta procédure comme ceci
set Wdépart = ActiveWorkbook
puis
set BU = Wdépart.Worksheets("JT_CASH_ALLOCATION").Range("A3")
et
WB.SaveAs Filename:=BU.Value & ...
3- "Vous ne vous êtes pas identifié"
4- A noter que le nom d'utilisateur est donné par :
nom_utilisateur = application.UserName
--
Bonjour Needhelp, bonjour le forum,
Ton code légèrement modifié :
Ton code légèrement modifié :
Sub Macro1() Dim CS As Workbook Dim OS As Worksheet Dim CD As Workbook Dim OD As Worksheet Dim NU As Variant Dim BU As String Set CS = ThisWorkbook Set OS = CS.Sheets("database CSV") ici: 'Demander les initiales de l'utilisateur' NU = Application.InputBox(" Vos initiales ? ", Type:=2) If NU = False Then Exit Sub 'Reprendre les initiales pour les insérer dans titre de sauvegarde' If NU = "" Then MsgBox "Vous ne vous êtes pas identifiez !" GoTo ici End If Set CD = Workbooks.Add Set OD = CD.Sheets(1) OS.Range("A1:N10000").Copy OD.Range("A1") 'Prendre la BU BU = CS.Worksheets("JT_CASH_ALLOCATION").Range("A3").Value 'Enregistrer sous avec format sauvegarde' ChDir "C:\Users\...\..." WB.SaveAs Filename:="BU" & "_" & Format(Date, "ddmmyyyy") & "_" & Format(Time, "hhmm") & "_" & NU, FileFormat:=xlCSVMSDOS _ , CreateBackup:=False 'Message de validation de sauvegarde' MsgBox "Le document a bien été enrégistré", vbOKOnly End Sub
Encore quelques petites questions.
Dim CS
Dim OS
Dim CD
Dim OD
Dim NU
Dim BU
Peux-tu me donner la signification de tes abréviations? (histoire que je comprennes ce que je fais).
Aussi, existe-t-il une formule afin de ne copier que les lignes dans lesquelles figurent une valeur de mon fichier d'origine (sachant que deux lignes avec valeur peuvent être séparées par de nombreuses lignes sans valeur)?
Et comment supprimer les 2 feuilles inutiles de mon nouveau classeur?
Encore une fois merci pour votre aide
Dim CS
Dim OS
Dim CD
Dim OD
Dim NU
Dim BU
Peux-tu me donner la signification de tes abréviations? (histoire que je comprennes ce que je fais).
Aussi, existe-t-il une formule afin de ne copier que les lignes dans lesquelles figurent une valeur de mon fichier d'origine (sachant que deux lignes avec valeur peuvent être séparées par de nombreuses lignes sans valeur)?
Et comment supprimer les 2 feuilles inutiles de mon nouveau classeur?
Encore une fois merci pour votre aide
Bonjour NeedHelp, Thev,
Vénérer ?! Non arrête ça va me véner...
Libre à toi de nommer tes variables comme bon te semble. Il est tout de même conseiller d'y mettre une ou plusieurs majuscules (chose que je fais) et de leur donner un nom explicite (chose que je ne fait pas)... Il est aussi plus que déconseiller, même interdit, d'utiliser des mots-clé de Visual basic...
Les Majuscules c'est parce que quand tu édites le code dans l'éditeur (VBE), il faut tout taper en minuscule. Quand tu valides la ligne avec la touche [Entrée], la ou les variables et les mots-clé utilisées dans la ligne prennent la casse (Maj/Min) initiale. Un rapide coup d'oeil permet ainsi d'éviter des fautes de frappe en écrivant le code.
Comme j'ai horreur des noms à rallonge, je nomme mes variables souvent par des initiales. Mais, encore une fois, tu les nommes comme tu veux et comme ça te convient à toi.
CS = Classeur Source
OS = Onglet Source
CD = Classeur Destination
OD = Onglet Destination
NU = Nom Utilisateur
BU = heu ! c'est toi qui l'a nommée celle-la...
Sinon pour supprimer les deux dernières feuilles du classeur destination regarde ce bout de code :
Pour l'autre problème, il faut boucler ligne par ligne en recherchant la valeur. Avec un fichier exemple et des explications plus claires je pourrais t'explique cela...
Vénérer ?! Non arrête ça va me véner...
Libre à toi de nommer tes variables comme bon te semble. Il est tout de même conseiller d'y mettre une ou plusieurs majuscules (chose que je fais) et de leur donner un nom explicite (chose que je ne fait pas)... Il est aussi plus que déconseiller, même interdit, d'utiliser des mots-clé de Visual basic...
Les Majuscules c'est parce que quand tu édites le code dans l'éditeur (VBE), il faut tout taper en minuscule. Quand tu valides la ligne avec la touche [Entrée], la ou les variables et les mots-clé utilisées dans la ligne prennent la casse (Maj/Min) initiale. Un rapide coup d'oeil permet ainsi d'éviter des fautes de frappe en écrivant le code.
Comme j'ai horreur des noms à rallonge, je nomme mes variables souvent par des initiales. Mais, encore une fois, tu les nommes comme tu veux et comme ça te convient à toi.
CS = Classeur Source
OS = Onglet Source
CD = Classeur Destination
OD = Onglet Destination
NU = Nom Utilisateur
BU = heu ! c'est toi qui l'a nommée celle-la...
Sinon pour supprimer les deux dernières feuilles du classeur destination regarde ce bout de code :
Application.DisplayAlerts = False CD.Sheets(Array("Feuil2", "Feuil3")).Delete Application.DisplayAlerts = True
Pour l'autre problème, il faut boucler ligne par ligne en recherchant la valeur. Avec un fichier exemple et des explications plus claires je pourrais t'explique cela...