A voir également:
- Copier un tableau de taille variable à la suite d'un autre
- Réduire la taille d'un pdf - Guide
- Ce programme est écrit en python. il construit un mot secret dans une variable mais il ne l'affiche pas. modifiez-le pour qu'il affiche le mot secret. exécutez-le. quel est ce mot secret ? ✓ - Forum Python
- Taille 32x32 correspondance ✓ - Forum Loisirs / Divertissements
- Tableau croisé dynamique - Guide
- Afficher un tableau en c - Forum C
5 réponses
ccm81
Messages postés
10559
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
24 mars 2023
2 337
29 mars 2013 à 14:06
29 mars 2013 à 14:06
Bonjour
Les deux fichiers étant ouverts
bonne suite
Les deux fichiers étant ouverts
Public Sub Transfert()
Const fichiersource = "SophieLoug_1.xls"
Const feuillesource = "feuil1"
Const fichierbut = "SophieLoug_2.xls"
Const feuillebut = "data"
Dim plage As String
Dim lider As Long
Windows(fichiersource).Activate
Sheets(feuillesource).Activate
plage = "A2:K" & Range("A" & Rows.Count).End(xlUp).Row
ActiveSheet.Range(plage).Copy
Windows(fichierbut).Activate
Sheets(feuillebut).Activate
lider = ActiveSheet.Range("A" & Rows.Count).End(xlUp).Row + 1
Range("A" & lider).Select
ActiveSheet.Paste
End Sub
bonne suite
ccm81
Messages postés
10559
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
24 mars 2023
2 337
Modifié par ccm81 le 29/03/2013 à 15:07
Modifié par ccm81 le 29/03/2013 à 15:07
Peut être ceci
Une macro à placer dans le fichier but qui va chercher le fichier source via l'explorateur, reste à voir le nom de la feuille à copier....
bonne suite
Une macro à placer dans le fichier but qui va chercher le fichier source via l'explorateur, reste à voir le nom de la feuille à copier....
Public Sub Transfert()
Const fichierbut = "SophieLoug_2.xls"
Const feuillebut = "data"
Const feuillesource = "feuil1"
Dim plage As String
Dim lider As Long
Dim fichiersource As String
Application.ScreenUpdating = False
fichiersource = Application.GetOpenFilename("fichier source (*.xls),*.xls")
If fichiersource = "Faux" Then Exit Sub
Workbooks.Open Filename:=fichiersource
fichiersource = ActiveWorkbook.Name
Sheets(feuillesource).Activate
plage = "A2:K" & Range("A" & Rows.Count).End(xlUp).Row
ActiveSheet.Range(plage).Copy
Windows(fichierbut).Activate
Sheets(feuillebut).Activate
lider = ActiveSheet.Range("A" & Rows.Count).End(xlUp).Row + 1
Range("A" & lider).Select
ActiveSheet.Paste
Workbooks(fichiersource).Close
Application.ScreenUpdating = True
End Sub
bonne suite
ccm81
Messages postés
10559
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
24 mars 2023
2 337
29 mars 2013 à 15:08
29 mars 2013 à 15:08
RQ. seul le fichier but est ouvert au départ.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.ScreenUpdating = False
'Enregistrer le nom du fichier dans une variable
nomFichier = ActiveWorkbook.Name
'Enregistrer l'emplacement du fichier dans une variable
nomEmplacement = ActiveWorkbook.Path
'Ouvrir une boîte de dialogue permettant de connaître le nom et l'emplacement du fichier à importer
cheminFichier = Application.GetOpenFilename(fileFilter:="Excel Files (*.xlsx), *.xlsx", Title:="Fichier source")
'Ouvrir le fichier
Workbooks.Open Filename:=cheminFichier
'Convertir les codes magasins en nombre
ActiveSheet.Columns("D:D").Select
Selection.TextToColumns Destination:=Range("D1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
:=Array(1, 1), TrailingMinusNumbers:=True
'Sélectionner l'enseigne
Enseigne = InputBox("Préciser l'enseigne comme inscrit dans Sharepoint", "ENSEIGNE", 0)
'Sélectionner la saison
Saison = InputBox("Préciser la saison", "SAISON", 0)
'Filtrer sur les données qui nous interressent
ActiveSheet.ListObjects("Tableau_owssvr_1").Range.AutoFilter Field:=7, _
Criteria1:="Magasin"
ActiveSheet.ListObjects("Tableau_owssvr_1").Range.AutoFilter Field:=6, _
Criteria1:=Array("Colis autre magasin", "Colis non validé", "Colis validé à 0", _
"Doublon", "Ecart", "Inversion", "Non respect des procédures", "TIM avec écart", "TIM non validé", _
"TIM validé à 0"), Operator:= _
xlFilterValues
ActiveSheet.ListObjects("Tableau_owssvr_1").Range.AutoFilter Field:=3, _
Criteria1:=Enseigne
'Copier les données dans l'onglet DATA
ActiveSheet.Columns("A:k").Select
Selection.Copy
Sheets.Add.Name = "Nouveau"
Sheets("Nouveau").Activate
ActiveSheet.Range("A1").Select
ActiveSheet.Paste
A partir de là j'ai un problème
Const fichiersource = ActiveWorkbook
Const feuillesource = "Nouveau"
Const fichierbut = nomFichier
Const feuillebut = "DATA"
Dim plage As String
Dim lider As Long
Windows(fichiersource).Activate
Sheets(feuillesource).Activate
plage = "A2:K" & Range("A" & Rows.Count).End(xlUp).Row
ActiveSheet.Range(plage).Copy
Windows(fichierbut).Activate
Sheets(feuillebut).Activate
lider = ActiveSheet.Range("A" & Rows.Count).End(xlUp).Row + 1
Range("A" & lider).Select
ActiveSheet.Paste
End Sub
Application.ScreenUpdating = False
'Enregistrer le nom du fichier dans une variable
nomFichier = ActiveWorkbook.Name
'Enregistrer l'emplacement du fichier dans une variable
nomEmplacement = ActiveWorkbook.Path
'Ouvrir une boîte de dialogue permettant de connaître le nom et l'emplacement du fichier à importer
cheminFichier = Application.GetOpenFilename(fileFilter:="Excel Files (*.xlsx), *.xlsx", Title:="Fichier source")
'Ouvrir le fichier
Workbooks.Open Filename:=cheminFichier
'Convertir les codes magasins en nombre
ActiveSheet.Columns("D:D").Select
Selection.TextToColumns Destination:=Range("D1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
:=Array(1, 1), TrailingMinusNumbers:=True
'Sélectionner l'enseigne
Enseigne = InputBox("Préciser l'enseigne comme inscrit dans Sharepoint", "ENSEIGNE", 0)
'Sélectionner la saison
Saison = InputBox("Préciser la saison", "SAISON", 0)
'Filtrer sur les données qui nous interressent
ActiveSheet.ListObjects("Tableau_owssvr_1").Range.AutoFilter Field:=7, _
Criteria1:="Magasin"
ActiveSheet.ListObjects("Tableau_owssvr_1").Range.AutoFilter Field:=6, _
Criteria1:=Array("Colis autre magasin", "Colis non validé", "Colis validé à 0", _
"Doublon", "Ecart", "Inversion", "Non respect des procédures", "TIM avec écart", "TIM non validé", _
"TIM validé à 0"), Operator:= _
xlFilterValues
ActiveSheet.ListObjects("Tableau_owssvr_1").Range.AutoFilter Field:=3, _
Criteria1:=Enseigne
'Copier les données dans l'onglet DATA
ActiveSheet.Columns("A:k").Select
Selection.Copy
Sheets.Add.Name = "Nouveau"
Sheets("Nouveau").Activate
ActiveSheet.Range("A1").Select
ActiveSheet.Paste
A partir de là j'ai un problème
Const fichiersource = ActiveWorkbook
Const feuillesource = "Nouveau"
Const fichierbut = nomFichier
Const feuillebut = "DATA"
Dim plage As String
Dim lider As Long
Windows(fichiersource).Activate
Sheets(feuillesource).Activate
plage = "A2:K" & Range("A" & Rows.Count).End(xlUp).Row
ActiveSheet.Range(plage).Copy
Windows(fichierbut).Activate
Sheets(feuillebut).Activate
lider = ActiveSheet.Range("A" & Rows.Count).End(xlUp).Row + 1
Range("A" & lider).Select
ActiveSheet.Paste
End Sub
ccm81
Messages postés
10559
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
24 mars 2023
2 337
29 mars 2013 à 15:25
29 mars 2013 à 15:25
Voilà comment je vois les choses (mais vu d'ici ...)
0. La macro devrait être dans le fichier but
1. ta macro ouvre le fichier source avec quelque chose comme ça.
2. Dès que tu l'as ouvert, tu récupères son nom (sans le chemin d'accès) avec
3. tu fais ce que tu as à faire avec ta macro
4. Pour faire ta copie depuis le fichier source, tu actives le fichier source
etc...
0. La macro devrait être dans le fichier but
1. ta macro ouvre le fichier source avec quelque chose comme ça.
fichiersource = Application.GetOpenFilename("fichier source (*.xls),*.xls")
If fichiersource = "Faux" Then Exit Sub
Workbooks.Open Filename:=fichiersource
2. Dès que tu l'as ouvert, tu récupères son nom (sans le chemin d'accès) avec
fichiersource = ActiveWorkbook.Name
3. tu fais ce que tu as à faire avec ta macro
4. Pour faire ta copie depuis le fichier source, tu actives le fichier source
Workbooks(fichiersource).Activate
etc...
ccm81
Messages postés
10559
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
24 mars 2023
2 337
29 mars 2013 à 15:49
29 mars 2013 à 15:49
Et combien vaut lider quand ça plante?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
la solution :
Dim nbreLignesDATA As Integer
Dim nbreLignesNOUVEAU As Integer
'Enregistrer dans une variable, le nombre de ligne de l'onglet "DATA" du fichier "nomfichier"
Workbooks(nomFichier).Sheets("DATA").Activate
nbreLignesDATA = ActiveSheet.Range("A1").End(xlDown).Row
'Enregistrer dans une variable, le nombre de ligne de l'onglet "NOUVEAU" du fichier "fichiersource"
Workbooks(fichiersource).Sheets("Nouveau").Activate
nbreLignesNOUVEAU = ActiveSheet.Range("A1").End(xlDown).Row
'Copier les données de l'onglet "NOUVEAU" du fichier "fichiersource"
Workbooks(fichiersource).Sheets("Nouveau").Activate
ActiveSheet.Range(ActiveSheet.Cells(2, 1), ActiveSheet.Cells(nbreLignesNOUVEAU, 11)).Select
Selection.Copy
'Coller à la suite du tableau dans l'onglet "DATA" du fichier "nomfichier"
Workbooks(nomFichier).Sheets("DATA").Activate
ActiveSheet.Cells(nbreLignesDATA + 1, 1).Select
ActiveSheet.Paste
Dim nbreLignesDATA As Integer
Dim nbreLignesNOUVEAU As Integer
'Enregistrer dans une variable, le nombre de ligne de l'onglet "DATA" du fichier "nomfichier"
Workbooks(nomFichier).Sheets("DATA").Activate
nbreLignesDATA = ActiveSheet.Range("A1").End(xlDown).Row
'Enregistrer dans une variable, le nombre de ligne de l'onglet "NOUVEAU" du fichier "fichiersource"
Workbooks(fichiersource).Sheets("Nouveau").Activate
nbreLignesNOUVEAU = ActiveSheet.Range("A1").End(xlDown).Row
'Copier les données de l'onglet "NOUVEAU" du fichier "fichiersource"
Workbooks(fichiersource).Sheets("Nouveau").Activate
ActiveSheet.Range(ActiveSheet.Cells(2, 1), ActiveSheet.Cells(nbreLignesNOUVEAU, 11)).Select
Selection.Copy
'Coller à la suite du tableau dans l'onglet "DATA" du fichier "nomfichier"
Workbooks(nomFichier).Sheets("DATA").Activate
ActiveSheet.Cells(nbreLignesDATA + 1, 1).Select
ActiveSheet.Paste
29 mars 2013 à 14:38
j'ai adapté
Const fichiersource = ActiveWorkbook
Const feuillesource = "Nouveau"
Const fichierbut = nomFichier
Const feuillebut = "DATA"
Mais le ActiveWorkbook ne fonctionne (le nom du fichier change tout le temps)
29 mars 2013 à 14:57
"constante requise"
29 mars 2013 à 15:03
Cette macro va me rendre chèvre!