Macro VBA pour exporter des lignes dans un autre fichier
Résolu/Fermé
neurosis12
Messages postés
5
Date d'inscription
mercredi 21 janvier 2015
Statut
Membre
Dernière intervention
23 janvier 2015
-
Modifié par neurosis12 le 21/01/2015 à 21:43
Le Pingou Messages postés 12225 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 6 décembre 2024 - 23 janv. 2015 à 20:14
Le Pingou Messages postés 12225 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 6 décembre 2024 - 23 janv. 2015 à 20:14
A voir également:
- Macro VBA pour exporter des lignes dans un autre fichier
- Fichier rar - Guide
- Comment ouvrir un fichier epub ? - Guide
- Comment réduire la taille d'un fichier - Guide
- Ouvrir un fichier .bin - Guide
- Fichier host - Guide
6 réponses
Le Pingou
Messages postés
12225
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
6 décembre 2024
1 452
21 janv. 2015 à 22:12
21 janv. 2015 à 22:12
Bonjour,
Il semble qu'il y a un problème : selon votre macro qui est dans le [fichier1.xls], les lignes copiées sont celles du fichier 1 qui sont exporter/copier dans le fichier 2 .... Pas de trace du fichier 3...
C'est différent de vos explications !
Il semble qu'il y a un problème : selon votre macro qui est dans le [fichier1.xls], les lignes copiées sont celles du fichier 1 qui sont exporter/copier dans le fichier 2 .... Pas de trace du fichier 3...
C'est différent de vos explications !
Le Pingou
Messages postés
12225
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
6 décembre 2024
1 452
22 janv. 2015 à 11:50
22 janv. 2015 à 11:50
Bonjour,
J'espère que la proposition de pijaku (salutations) vous permette de résoudre le problème !
Au cas où vous revenez.
J'espère que la proposition de pijaku (salutations) vous permette de résoudre le problème !
Au cas où vous revenez.
neurosis12
Messages postés
5
Date d'inscription
mercredi 21 janvier 2015
Statut
Membre
Dernière intervention
23 janvier 2015
23 janv. 2015 à 15:21
23 janv. 2015 à 15:21
Bonjour! Je suis allé voir le lien que pijaku m'a recommandé. Je crois avoir trouvé ce qui me permettrait de faire fonctionner le macro mais je n'y arrive pas. Je ne suis pas très familier avec VBA, mais de ce que j'y comprend, l'idée serait la suivante:
- Pour savoir ou coller les données exportées, le macro indiquerait la feuille et la ligne ou commencer le collage spécial
L'erreur se trouve fort probablement dans ces lignes (selon le débogueur). De ce que j'ai pu comprendre, la variable derniereLigne ne prend pas la valeur assignée (la ligne suivant la dernière contenant du texte).
Mon intuition me dit que puisque le numéro de la ligne contenu dans ma variable derniereLigne pourrait être collé a l'emplacement en haut à gauche par exemple Range("B" & derniereLigne)
Voici la version complète :
- Pour savoir ou coller les données exportées, le macro indiquerait la feuille et la ligne ou commencer le collage spécial
L'erreur se trouve fort probablement dans ces lignes (selon le débogueur). De ce que j'ai pu comprendre, la variable derniereLigne ne prend pas la valeur assignée (la ligne suivant la dernière contenant du texte).
Dim derniereLigne As Range
derniereLigne = Range("B10").End(xlDown).Row + 1
derniereLigne.Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Mon intuition me dit que puisque le numéro de la ligne contenu dans ma variable derniereLigne pourrait être collé a l'emplacement en haut à gauche par exemple Range("B" & derniereLigne)
Voici la version complète :
Sub Exporter()
'
' Exporter Macro
' Macro enregistrée le 2015-01-12 par marl03
'
'
ActiveSheet.Shapes("Button 4").Select
Range("B10:K500").Select
Selection.Copy
Workbooks.Open Filename:= _
"C:\Users\neurosis12\fichier3.xls"
Sheets("Compilation").Select
Dim derniereLigne As Range
derniereLigne = Range("B10").End(xlDown).Row + 1
derniereLigne.Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
ActiveWorkbook.Save
ActiveWorkbook.Close
End Sub
Le Pingou
Messages postés
12225
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
6 décembre 2024
1 452
23 janv. 2015 à 15:40
23 janv. 2015 à 15:40
Bonjour,
Merci, je vous ferai une proposition en fin de journée.
Patience.
Note : vous avez ceci au début
Est-ce bien correct ou il s'agit des lignes à copier dès la 10 jusqu'à la dernière ligne qui peut être 25
soit :
Merci de votre réponse
Merci, je vous ferai une proposition en fin de journée.
Patience.
Note : vous avez ceci au début
Range("B10:K500").Select
Est-ce bien correct ou il s'agit des lignes à copier dès la 10 jusqu'à la dernière ligne qui peut être 25
soit :
Range("B10:K25").Select
Merci de votre réponse
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Le Pingou
Messages postés
12225
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
6 décembre 2024
1 452
23 janv. 2015 à 16:50
23 janv. 2015 à 16:50
Bonjour,
Essayer avec cette procédure (j'ai laissé les lignes non utilisées en commentaires (en vert):
Essayer avec cette procédure (j'ai laissé les lignes non utilisées en commentaires (en vert):
Sub Exporter() ' ' Exporter Macro ' Macro enregistrée le 2015-01-12 par marl03 ' Dim derniereLigne As Integer, deliso As Integer Dim shso As Object, shci As Object ' Set shso = ActiveSheet With shso ' ActiveSheet.Shapes("Button 4").Select ' instruction inutile ...! ' *** chercher numéro dernière ligne à copier deliso = .Cells(Rows.Count, 2).End(xlUp).Row ' Range("B10:K500").Select ' Selection.Copy Workbooks.Open Filename:="C:\Users\neurosis12\fichier3.xls" Set shci = Sheets("Compilation") ' *** position première ligne vide derniereLigne = shci.Cells(Rows.Count, 2).End(xlUp).Row + 1 ' derniereLigne.Select ' *** copier plage source vers cible .Range("B10:K" & deliso).Copy Destination:=shci.Range("B" & derniereLigne) ' Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ ' :=False, Transpose:=False ' ActiveWorkbook.Save 'fermeture et sauvegarde dans ligne suivante ActiveWorkbook.Close SaveChanges:=True End With Set shso = Nothing Set shci = Nothing End Sub
neurosis12
Messages postés
5
Date d'inscription
mercredi 21 janvier 2015
Statut
Membre
Dernière intervention
23 janvier 2015
23 janv. 2015 à 17:50
23 janv. 2015 à 17:50
Merci infiniment pour vos réponses! Je viens de sortir de réunion alors laissez moi un moment pour tester et vous donner une réponse claire.
neurosis12
Messages postés
5
Date d'inscription
mercredi 21 janvier 2015
Statut
Membre
Dernière intervention
23 janvier 2015
23 janv. 2015 à 20:04
23 janv. 2015 à 20:04
Je viens de tester ton Macro, il fonctionne très bien! Milles merci Le Pingou!
Le Pingou
Messages postés
12225
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
6 décembre 2024
1 452
23 janv. 2015 à 20:14
23 janv. 2015 à 20:14
Bonjour,
Merci, content pour vous.
Merci, content pour vous.
Modifié par neurosis12 le 22/01/2015 à 00:06
Pour être plus clair, le fichier 1 et 2 c'est le même fichier mais à deux emplacements différents. Ces fichiers ont un bouton exporter et celui-ci copie colle les 500 lignes (non vide) - donc admettons qu'il a écrit 5 lignes elles sont copier collées dans le "fichier3" qui est en quelque sorte le fichier cible de tout les fichier1 (il va probablement en avoir plus que deux, mais je ne crois pas que cela ne cause de problèmes).
Si aucune donnée n'est encore présente dans le fichier3 le macro fonctionne. Le problème survient lorsque j'ai déjà des données d'exportées. Puisque mon deuxième Range est "statique" je crois que le problème est là (il essaie de "collage spécial" par dessus des données non vide. Il faudrait en quelque sorte que je sois capable de savoir à quelle ligne (la première vide) je peux importer les données subséquentes.
22 janv. 2015 à 10:14
Pour connaitre la première ligne vide, lisez ceci :
https://forums.commentcamarche.net/forum/affich-37622001-vba-detection-de-cellule-vide-ligne-colonnne