Importer les lignes d'un autre classeur
Résolu/Fermé
triwix
Messages postés
296
Date d'inscription
mercredi 7 janvier 2009
Statut
Membre
Dernière intervention
4 février 2011
-
19 févr. 2009 à 22:17
Le Pingou Messages postés 12187 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 14 novembre 2024 - 22 févr. 2009 à 21:06
Le Pingou Messages postés 12187 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 14 novembre 2024 - 22 févr. 2009 à 21:06
A voir également:
- Importer les lignes d'un autre classeur
- Excel trier par ordre alphabétique en gardant les lignes - Guide
- Importer favoris chrome - Guide
- Importer favoris firefox - Guide
- Importer contact carte sim - Guide
- Importer calendrier outlook dans google agenda - Guide
15 réponses
Le Pingou
Messages postés
12187
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
14 novembre 2024
1 449
21 févr. 2009 à 23:48
21 févr. 2009 à 23:48
Bonjour triwix,
Supposition : toutes les lignes de la feuille 1 (Feuil1) du classeur source en 1 bloc, sauf la 1 :ligne de Sur la feuille 1 du classeur cible à la suite des existantes.
La macro se charge des noms des classeurs.
Vous copier et coller ce code dans un module de votre classeur cible.
Supposition : toutes les lignes de la feuille 1 (Feuil1) du classeur source en 1 bloc, sauf la 1 :ligne de Sur la feuille 1 du classeur cible à la suite des existantes.
La macro se charge des noms des classeurs.
Vous copier et coller ce code dans un module de votre classeur cible.
Sub Importer_ligne() ' macro enregistrée le 21 février 2009 par Jean-Pierre Purro Dim objcible As Workbook, objsource As Workbook Dim delig, prligvi Set objcible = ActiveWorkbook ' position de la première ligne vide prligvi = Cells(2000, 1).End(xlUp).Row + 1 Set objsource = Workbooks.Open(Application.GetOpenFilename) ' supposition, ligne 1et 2 avec titre non copier le reste en un bloc ' position de la dernière ligne de wo source : sur la colonne A Sheets("Feuil1").Select delig = Cells(2000, 1).End(xlUp).Row Range("3:" & delig).Copy Destination:=objcible.Sheets("Feuil1").Range("A" & prligvi) objcible.Activate Sheets("Feuil1").Select Range("A1").Select MsgBox ("les " & delig & " lignes de données sont importées.") End Sub
Le Pingou
Messages postés
12187
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
14 novembre 2024
1 449
22 févr. 2009 à 15:06
22 févr. 2009 à 15:06
Bonjour triwix,
Avant de continuer, essayez cette version : https://www.cjoint.com/?cypffyC86W
Vous aviez parlé de ligne vide ... quant n'est-il ?
Avant de continuer, essayez cette version : https://www.cjoint.com/?cypffyC86W
Vous aviez parlé de ligne vide ... quant n'est-il ?
Le Pingou
Messages postés
12187
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
14 novembre 2024
1 449
20 févr. 2009 à 16:42
20 févr. 2009 à 16:42
Bonjour,
Juste au passage, il est plus simple de réaliser un copier / coller.
Juste au passage, il est plus simple de réaliser un copier / coller.
triwix
Messages postés
296
Date d'inscription
mercredi 7 janvier 2009
Statut
Membre
Dernière intervention
4 février 2011
21
21 févr. 2009 à 18:47
21 févr. 2009 à 18:47
Oui je suis ok avec toi, c'est ce que je fait pour l'instant.
Mais je demande ça en vue de le faire plusieurs fois par jour
Mais je demande ça en vue de le faire plusieurs fois par jour
Le Pingou
Messages postés
12187
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
14 novembre 2024
1 449
21 févr. 2009 à 22:44
21 févr. 2009 à 22:44
Bonjour,
Pouvez-vous préciser,
si la première ligne du classeur source a des titres, si oui faut-il l'importer ?
Est-ce que les lignes sont importer en bloc ?
Merci.
Pouvez-vous préciser,
si la première ligne du classeur source a des titres, si oui faut-il l'importer ?
Est-ce que les lignes sont importer en bloc ?
Merci.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
triwix
Messages postés
296
Date d'inscription
mercredi 7 janvier 2009
Statut
Membre
Dernière intervention
4 février 2011
21
21 févr. 2009 à 23:35
21 févr. 2009 à 23:35
Bien le bonsoir,
Donc oui il y a des titres de colonne sur les 2 premières lignes à ne pas importer.
Et en général environ 10 à 20 ligne c'est pour ça que je sélectionnerais de la ligne 3 à la 30 à importer comme ça j'ai tout ce qu'il faut.
Les importations doivent se coller à la suite les unes des autres avec une ligne de séparation et éventuellement la date d'import
Pour ton autre question je ne m'en souviens pas et je ne sais pas ce que j'ai bricolé je ne peux plus lire ton message
Peux tu me dire si on peux masquer les message car là je ne vois pas
Bonne nuit
Donc oui il y a des titres de colonne sur les 2 premières lignes à ne pas importer.
Et en général environ 10 à 20 ligne c'est pour ça que je sélectionnerais de la ligne 3 à la 30 à importer comme ça j'ai tout ce qu'il faut.
Les importations doivent se coller à la suite les unes des autres avec une ligne de séparation et éventuellement la date d'import
Pour ton autre question je ne m'en souviens pas et je ne sais pas ce que j'ai bricolé je ne peux plus lire ton message
Peux tu me dire si on peux masquer les message car là je ne vois pas
Bonne nuit
triwix
Messages postés
296
Date d'inscription
mercredi 7 janvier 2009
Statut
Membre
Dernière intervention
4 février 2011
21
21 févr. 2009 à 23:38
21 févr. 2009 à 23:38
C'est bon c'est revenu.
Donc oui on peut importer les 27 ligne en blocs je pense que ce serait moins gourmand en ressources que de chercher une à une les lignes non vides pour les importer.
Peut-être que je me trompe.
Bonne soirée à tous
Donc oui on peut importer les 27 ligne en blocs je pense que ce serait moins gourmand en ressources que de chercher une à une les lignes non vides pour les importer.
Peut-être que je me trompe.
Bonne soirée à tous
triwix
Messages postés
296
Date d'inscription
mercredi 7 janvier 2009
Statut
Membre
Dernière intervention
4 février 2011
21
22 févr. 2009 à 00:06
22 févr. 2009 à 00:06
RE, le pingou, merci de ta réponse rapide, mais je ne peux pas la lire je ne sais pas ce qui bug si c'est chez moi ou sur le site....
On verra demain, bonne nuit
On verra demain, bonne nuit
triwix
Messages postés
296
Date d'inscription
mercredi 7 janvier 2009
Statut
Membre
Dernière intervention
4 février 2011
21
22 févr. 2009 à 13:55
22 févr. 2009 à 13:55
Salut, ca fonctionne très bien, j'ai mis
prligvi = Cells(2000, 1).End(xlUp).Row + 3 pour intercaler les importations de 2 lignes.
Seul truc on me demande d'ouvrir le dossier :
Set objsource = Workbooks.Open(Application.GetOpenFilename)
alors qu'il est ouvert, mais pas enregistré sur mon disque, donc je doit l'enregistrer, puis la macro me demande de le réouvrir.
j'essaie de modifier cette phrase pour que l'application reconnaisse mon fichier transactions.xls qui est déjà ouvert en lecture seule, mais en vain, t'as un tuyau s'il te plait?
Bon dimanche
prligvi = Cells(2000, 1).End(xlUp).Row + 3 pour intercaler les importations de 2 lignes.
Seul truc on me demande d'ouvrir le dossier :
Set objsource = Workbooks.Open(Application.GetOpenFilename)
alors qu'il est ouvert, mais pas enregistré sur mon disque, donc je doit l'enregistrer, puis la macro me demande de le réouvrir.
j'essaie de modifier cette phrase pour que l'application reconnaisse mon fichier transactions.xls qui est déjà ouvert en lecture seule, mais en vain, t'as un tuyau s'il te plait?
Bon dimanche
triwix
Messages postés
296
Date d'inscription
mercredi 7 janvier 2009
Statut
Membre
Dernière intervention
4 février 2011
21
22 févr. 2009 à 16:30
22 févr. 2009 à 16:30
Rebonjour Le Pingou,
Impeccable, la macro ramenée à mon cas donne ça:
Sub Import_ligne()
' macro enregistrée le 21 février 2009 par Jean-Pierre Purro
Dim objcible As Workbook, objsource As Workbook
Dim importdulea As String
Dim delig, prligvi
Set objcible = ActiveWorkbook
' position de la première ligne vide
prligvi = Cells(2000, 1).End(xlUp).Row + 3
Set objsource = Workbooks.Open(Application.GetOpenFilename)
' supposition, ligne 1et 2 avec titre non copier, le reste en un bloc
' position de la dernière ligne de wosource : sur la colonne A
' Importation du "Classeur1.xls" le 15 décembre 2008 à 15:52
importdulea = "Importation du classeur [" & objsource.Name & "] le " & Format(Date, "dd mmmm yyyy") & " à " & Time
Sheets("transactions").Select
delig = Cells(2000, 1).End(xlUp).Row
objcible.Sheets("Feuil1").Range("A" & prligvi) = importdulea
With Cells(prligvi, 1).Font
.Color = -16776961
.TintAndShade = 0
End With
Range("3:" & delig).Copy Destination:=objcible.Sheets("Feuil1").Range("A" & prligvi + 1)
objsource.Close SaveChanges:=False
objcible.Activate
Sheets("Feuil1").Select
Range("A1").Select
MsgBox ("les " & delig & " lignes de données sont importées.")
End Sub
Juste un soucis avec .TintAndShade = 0 qui bogg une fois oter ça roule
J'ai insèré des lignes vides entre les importation c'est OK
Tu m'ote une grosse épine du pied, et je te remercie du temps que tu m'a consacré.
La seule dernière question avant que ma requète soit résolue totalement est Comment modifier:
Set objsource = Workbooks.Open(Application.GetOpenFilename)
De façon à ce que mon fichier qui s'appelle transactions et qui est ouvert soit pris en compte comme source.
Car dans le cas présente je dois l'enregister pour indiquer son chemin à la macro.
Je ne sais pas si je me fais bien comprendre.
encore merci
@+
Impeccable, la macro ramenée à mon cas donne ça:
Sub Import_ligne()
' macro enregistrée le 21 février 2009 par Jean-Pierre Purro
Dim objcible As Workbook, objsource As Workbook
Dim importdulea As String
Dim delig, prligvi
Set objcible = ActiveWorkbook
' position de la première ligne vide
prligvi = Cells(2000, 1).End(xlUp).Row + 3
Set objsource = Workbooks.Open(Application.GetOpenFilename)
' supposition, ligne 1et 2 avec titre non copier, le reste en un bloc
' position de la dernière ligne de wosource : sur la colonne A
' Importation du "Classeur1.xls" le 15 décembre 2008 à 15:52
importdulea = "Importation du classeur [" & objsource.Name & "] le " & Format(Date, "dd mmmm yyyy") & " à " & Time
Sheets("transactions").Select
delig = Cells(2000, 1).End(xlUp).Row
objcible.Sheets("Feuil1").Range("A" & prligvi) = importdulea
With Cells(prligvi, 1).Font
.Color = -16776961
.TintAndShade = 0
End With
Range("3:" & delig).Copy Destination:=objcible.Sheets("Feuil1").Range("A" & prligvi + 1)
objsource.Close SaveChanges:=False
objcible.Activate
Sheets("Feuil1").Select
Range("A1").Select
MsgBox ("les " & delig & " lignes de données sont importées.")
End Sub
Juste un soucis avec .TintAndShade = 0 qui bogg une fois oter ça roule
J'ai insèré des lignes vides entre les importation c'est OK
Tu m'ote une grosse épine du pied, et je te remercie du temps que tu m'a consacré.
La seule dernière question avant que ma requète soit résolue totalement est Comment modifier:
Set objsource = Workbooks.Open(Application.GetOpenFilename)
De façon à ce que mon fichier qui s'appelle transactions et qui est ouvert soit pris en compte comme source.
Car dans le cas présente je dois l'enregister pour indiquer son chemin à la macro.
Je ne sais pas si je me fais bien comprendre.
encore merci
@+
triwix
Messages postés
296
Date d'inscription
mercredi 7 janvier 2009
Statut
Membre
Dernière intervention
4 février 2011
21
22 févr. 2009 à 16:58
22 févr. 2009 à 16:58
Ah je mes suis réjoui trop tard car il faut que je copie que jusqu'à la colonne AF et non la ligne complette.
Je regarde comment matérialiser ça dans la macro
Je regarde comment matérialiser ça dans la macro
Le Pingou
Messages postés
12187
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
14 novembre 2024
1 449
22 févr. 2009 à 17:42
22 févr. 2009 à 17:42
Bonjour triwix,
Concernant le classeur source :
1.-Votre classeur est sur un répertoire du PC (depuis le mail il est simple de le glisser sur le bureau)
2.- Si vous ne voulez pas la glisser sur votre bureau mais simplement l’ouvrir, il faut modifier la variable [objsource] en As String et ensuite lui attribuer le nom de votre classeur car l’application doit avoir le nom exact.
Concernant .TintAndShade = 0 , il n’est pas reconnu par la version 2003, vous le supprimer, c’est un oubli de ma part.
Concernant le classeur source :
1.-Votre classeur est sur un répertoire du PC (depuis le mail il est simple de le glisser sur le bureau)
2.- Si vous ne voulez pas la glisser sur votre bureau mais simplement l’ouvrir, il faut modifier la variable [objsource] en As String et ensuite lui attribuer le nom de votre classeur car l’application doit avoir le nom exact.
Concernant .TintAndShade = 0 , il n’est pas reconnu par la version 2003, vous le supprimer, c’est un oubli de ma part.
triwix
Messages postés
296
Date d'inscription
mercredi 7 janvier 2009
Statut
Membre
Dernière intervention
4 février 2011
21
22 févr. 2009 à 18:02
22 févr. 2009 à 18:02
Pas de soucis pour l'oubli j'avais oté la ligne rebelle.
Comment dois inscrir le chemin de l'objet source qui est ouvert, car je met ça mais le déboggeur me dit que je n'ai pas d'objet:
Sub Import_ligne()
' macro enregistrée le 21 février 2009 par Jean-Pierre Purro
Dim objcible As Workbook, objsource As String
Dim importdulea As String
Dim delig, prligvi
Set objcible = ActiveWorkbook
' position de la première ligne vide
prligvi = Cells(2000, 1).End(xlUp).Row + 3
Set objsource = "transactions.xls"
' supposition, ligne 1et 2 avec titre non copier, le reste en un bloc
' position de la dernière ligne de wosource : sur la colonne A
' Importation du "Classeur1.xls" le 15 décembre 2008 à 15:52
importdulea = "Importation du classeur [" & objsource.Name & "] le " & Format(Date, "dd mmmm yyyy") & " à " & Time
Sheets("transactions").Select
delig = Cells(2000, 1).End(xlUp).Row
objcible.Sheets("Feuil1").Range("A" & prligvi) = importdulea
With Cells(prligvi, 1).Font
.Color = -16776961
End With
Range("3:" & delig).Copy Destination:=objcible.Sheets("Feuil1").Range("A" & prligvi + 2)
objsource.Close SaveChanges:=False
objcible.Activate
Sheets("Feuil1").Select
Range("A1").Select
MsgBox ("les " & delig & " lignes de données sont importées.")
End Sub
Il faut le temps que ça rentre désolé pour les questions qui sont certainement élèmentaires
Comment dois inscrir le chemin de l'objet source qui est ouvert, car je met ça mais le déboggeur me dit que je n'ai pas d'objet:
Sub Import_ligne()
' macro enregistrée le 21 février 2009 par Jean-Pierre Purro
Dim objcible As Workbook, objsource As String
Dim importdulea As String
Dim delig, prligvi
Set objcible = ActiveWorkbook
' position de la première ligne vide
prligvi = Cells(2000, 1).End(xlUp).Row + 3
Set objsource = "transactions.xls"
' supposition, ligne 1et 2 avec titre non copier, le reste en un bloc
' position de la dernière ligne de wosource : sur la colonne A
' Importation du "Classeur1.xls" le 15 décembre 2008 à 15:52
importdulea = "Importation du classeur [" & objsource.Name & "] le " & Format(Date, "dd mmmm yyyy") & " à " & Time
Sheets("transactions").Select
delig = Cells(2000, 1).End(xlUp).Row
objcible.Sheets("Feuil1").Range("A" & prligvi) = importdulea
With Cells(prligvi, 1).Font
.Color = -16776961
End With
Range("3:" & delig).Copy Destination:=objcible.Sheets("Feuil1").Range("A" & prligvi + 2)
objsource.Close SaveChanges:=False
objcible.Activate
Sheets("Feuil1").Select
Range("A1").Select
MsgBox ("les " & delig & " lignes de données sont importées.")
End Sub
Il faut le temps que ça rentre désolé pour les questions qui sont certainement élèmentaires
Le Pingou
Messages postés
12187
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
14 novembre 2024
1 449
22 févr. 2009 à 18:14
22 févr. 2009 à 18:14
Bonjour triwix,
Je vais vous réaliser la modification.
Quelle est le nom exact de votre classeur source (attention majuscule/minuscule)
Merci.
Je vais vous réaliser la modification.
Quelle est le nom exact de votre classeur source (attention majuscule/minuscule)
Merci.
triwix
Messages postés
296
Date d'inscription
mercredi 7 janvier 2009
Statut
Membre
Dernière intervention
4 février 2011
21
22 févr. 2009 à 18:21
22 févr. 2009 à 18:21
c'est sympa.
Nom: transactions ouvert en lecture seule si ça a une importance, fichier .xls
Nom: transactions ouvert en lecture seule si ça a une importance, fichier .xls
Le Pingou
Messages postés
12187
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
14 novembre 2024
1 449
22 févr. 2009 à 18:54
22 févr. 2009 à 18:54
Bonjour triwix,
J'espère que se sera bon !
J'espère que se sera bon !
Sub Importer_ligne_wbopen() ' macro enregistrée le 21 février 2009 par Jean-Pierre Purro Dim objcible As Workbook, objsource As Workbook Dim importdulea As String Dim delig, prligvi Set objcible = ActiveWorkbook ' position de la première ligne vide prligvi = Cells(2000, 1).End(xlUp).Row + 1 Set objsource = Workbooks("transactions.xls") objsource.Activate ' supposition, ligne 1et 2 avec titre non copier, le reste en un bloc ' position de la dernière ligne de wosource : sur la colonne A ' Importation du "Classeur1.xls" le 15 décembre 2008 à 15:52 importdulea = "Importation du classeur [" & objsource.Name & "] le " & Format(Date, "dd mmmm yyyy") & " à " & Time Sheets("Feuil1").Select delig = Cells(2000, 1).End(xlUp).Row objcible.Sheets("Feuil1").Range("A" & prligvi) = importdulea With objcible.Sheets("Feuil1").Cells(prligvi, 1).Font .Color = -16776961 End With Range("A3:AF" & delig).Copy Destination:=objcible.Sheets("Feuil1").Range("A" & prligvi + 1) objcible.Activate Sheets("Feuil1").Select Range("A1").Select MsgBox ("les " & delig & " lignes de données sont importées.") End Sub
triwix
Messages postés
296
Date d'inscription
mercredi 7 janvier 2009
Statut
Membre
Dernière intervention
4 février 2011
21
22 févr. 2009 à 19:22
22 févr. 2009 à 19:22
Là je dit champion du monde!!! bravo
Voici la définitive:
Sub Importer_ligne_wbopen()
' macro enregistrée le 21 février 2009 par Jean-Pierre Purro
Dim objcible As Workbook, objsource As Workbook
Dim importdulea As String
Dim delig, prligvi
Set objcible = ActiveWorkbook
' position de la première ligne vide
prligvi = Cells(2000, 1).End(xlUp).Row + 3
Set objsource = Workbooks("transactions.xls")
objsource.Activate
' supposition, ligne 1et 2 avec titre non copier, le reste en un bloc
' position de la dernière ligne de wosource : sur la colonne A
' Importation du "Classeur1.xls" le 15 décembre 2008 à 15:52
importdulea = "Importation du classeur [" & objsource.Name & "] le " & Format(Date, "dd mmmm yyyy") & " à " & Time
Sheets("transactions").Select
delig = Cells(2000, 1).End(xlUp).Row
objcible.Sheets("Feuil1").Range("A" & prligvi) = importdulea
With objcible.Sheets("Feuil1").Cells(prligvi, 1).Font
.Color = -16776961
End With
Range("A3:AF" & delig).Copy Destination:=objcible.Sheets("Feuil1").Range("A" & prligvi + 2)
objcible.Activate
Sheets("Feuil1").Select
Range("A1").Select
MsgBox ("les " & delig & " lignes de données sont importées.")
End Sub
Encore merci, affaire réglée
bonne soirée
Voici la définitive:
Sub Importer_ligne_wbopen()
' macro enregistrée le 21 février 2009 par Jean-Pierre Purro
Dim objcible As Workbook, objsource As Workbook
Dim importdulea As String
Dim delig, prligvi
Set objcible = ActiveWorkbook
' position de la première ligne vide
prligvi = Cells(2000, 1).End(xlUp).Row + 3
Set objsource = Workbooks("transactions.xls")
objsource.Activate
' supposition, ligne 1et 2 avec titre non copier, le reste en un bloc
' position de la dernière ligne de wosource : sur la colonne A
' Importation du "Classeur1.xls" le 15 décembre 2008 à 15:52
importdulea = "Importation du classeur [" & objsource.Name & "] le " & Format(Date, "dd mmmm yyyy") & " à " & Time
Sheets("transactions").Select
delig = Cells(2000, 1).End(xlUp).Row
objcible.Sheets("Feuil1").Range("A" & prligvi) = importdulea
With objcible.Sheets("Feuil1").Cells(prligvi, 1).Font
.Color = -16776961
End With
Range("A3:AF" & delig).Copy Destination:=objcible.Sheets("Feuil1").Range("A" & prligvi + 2)
objcible.Activate
Sheets("Feuil1").Select
Range("A1").Select
MsgBox ("les " & delig & " lignes de données sont importées.")
End Sub
Encore merci, affaire réglée
bonne soirée
Le Pingou
Messages postés
12187
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
14 novembre 2024
1 449
22 févr. 2009 à 21:06
22 févr. 2009 à 21:06
Merci triwix, de rien.