Importer les lignes d'un autre classeur
Résolu
triwix
Messages postés
306
Statut
Membre
-
Le Pingou Messages postés 12638 Statut Contributeur -
Le Pingou Messages postés 12638 Statut Contributeur -
Bonsoir tout le monde,
J'ai cherché sur le site car j'avais trouvé un poste avec une VBA qui m'allait au poil, mais je ne remet pas la main dessus, donc je vous demande un chti coup de main.
Sur excel 2003
J'ai un classeur qui s'appelle envoi avec la feuil1 dans laquelle je veux importer les lignes d'un autre classeur, après celles qui sont déjà présentes sur cette feuille, donc il faut que je détecte quelle est la première ligne videpour y coller mon import.
Mon autre classeur est ouvert, et n'est pas enregistré sur mon disque, je le reçoit par mail, je l'ouvre, je voudrait en extraire les lignes de la 3ème à la 30ème
Et inserrer avant celle-ci la date .
J'espère être clair
Merci à tout ceux qui pourront me faire avancer
Bonne sirée
J'ai cherché sur le site car j'avais trouvé un poste avec une VBA qui m'allait au poil, mais je ne remet pas la main dessus, donc je vous demande un chti coup de main.
Sur excel 2003
J'ai un classeur qui s'appelle envoi avec la feuil1 dans laquelle je veux importer les lignes d'un autre classeur, après celles qui sont déjà présentes sur cette feuille, donc il faut que je détecte quelle est la première ligne videpour y coller mon import.
Mon autre classeur est ouvert, et n'est pas enregistré sur mon disque, je le reçoit par mail, je l'ouvre, je voudrait en extraire les lignes de la 3ème à la 30ème
Et inserrer avant celle-ci la date .
J'espère être clair
Merci à tout ceux qui pourront me faire avancer
Bonne sirée
A voir également:
- Importer les lignes d'un autre classeur
- Importer favoris chrome - Guide
- Importer favoris firefox - Guide
- Importer contact carte sim - Guide
- Imprimer un classeur excel sur mac - Guide
- Excel trier par ordre alphabétique en gardant les lignes - Guide
15 réponses
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
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 ?
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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
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
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
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
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
@+
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
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.
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
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
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
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