Copier coller des données d'autres fichiers
mickmac
Messages postés
415
Date d'inscription
Statut
Membre
Dernière intervention
-
mickmac Messages postés 415 Date d'inscription Statut Membre Dernière intervention -
mickmac Messages postés 415 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous,
Je souhaite faire un fichier qui me permette de regrouper sur une unique feuille les données(enfin que le "corps" ; sans les entetes et la toute derniere ligne somme) d'autres fichiers (contenant plusieurs feuilles mais toutes sont formalisées de la même manière).
J'ai donc commencé un programme avec un formulaire qui marche bien.
Cependant je bloque pour le copiage et collage des données et je ne trouve pas comment avancer.
j'envoie ci joint le fichier qui accueillera les données des rapports d'activités et 2 exemples de rapport d'activité
Et je colle içi ma procédure copiecolle dont le déboggeur me renvoie une erreur des la premiere ligne (sub ou function non définie)
https://www.cjoint.com/c/HDwhOSG6Z8W
https://www.cjoint.com/c/HDwhRV6hMeW
https://www.cjoint.com/c/HDwhSwf7CIW
Merci beaucoup de votre aide ^^
PS: je viens de voir la présentation du code ; ça rend pas très bien sur le forum c'est normal ?
Je souhaite faire un fichier qui me permette de regrouper sur une unique feuille les données(enfin que le "corps" ; sans les entetes et la toute derniere ligne somme) d'autres fichiers (contenant plusieurs feuilles mais toutes sont formalisées de la même manière).
J'ai donc commencé un programme avec un formulaire qui marche bien.
Cependant je bloque pour le copiage et collage des données et je ne trouve pas comment avancer.
j'envoie ci joint le fichier qui accueillera les données des rapports d'activités et 2 exemples de rapport d'activité
Et je colle içi ma procédure copiecolle dont le déboggeur me renvoie une erreur des la premiere ligne (sub ou function non définie)
Private Sub copiecolle(fichier As String) Dim debut As Integer: Dim position As Integer: Dim text As Variant: Dim nomfichier As Variant: Dim lign As Integer: Dim colon As Integer: Dim x As Integer: Dim y As Integer Dim sh As Worksheet 'ouvrir le premier fichier pour pouvoir copier coller ses données' Worbook.Open fichier nomfichier = Dir(fichier) 'Pour chaque feuille du fichier à copier, trouver le nombre de lignes et jusqu'à ce que la colonne 1 contienne un vide' Dim count As Long: Dim cel As Range For Each sh In nomfichier count = 0 For Each cel In Columns(1) If cel.Value <> "" Then count = count + 1 End If Next cel MsgBox count 'comme la 2eme ligne de chaque feuille est une ligne d'entete en 2eme ligne qui ne m'interesse pas, je dois enlever 1 au compteur' count = count - 1 MsgBox count 'Pour chaque fichier de la liste, pour chaque feuilles de ce fichier, pour chaque ligne à partir de la ligne 3, je viens copier la ligne et la coller dans la feuil1 du fichier prévisionnel ' For y = 3 To count Workbook(prévisionnel).Worksheet("Feuil1").Row.Value=Workbook(nomfichier).Worksheet("sh").Row(ligne_encours).Value ligne_encours = ligne_encours + 1 'j'incrémente ligne_encours afin que dans mon fichier prévisionnel, la copie continue à ce faire dans la colonne d'en dessous ' Next Next End Sub
EDIT : Ajout du LANGAGE dans les balises de code (la coloration syntaxique).
Explications disponibles ici : ICI Merci d'y penser dans tes prochains messages. |
https://www.cjoint.com/c/HDwhOSG6Z8W
https://www.cjoint.com/c/HDwhRV6hMeW
https://www.cjoint.com/c/HDwhSwf7CIW
Merci beaucoup de votre aide ^^
PS: je viens de voir la présentation du code ; ça rend pas très bien sur le forum c'est normal ?
A voir également:
- Copier coller des données d'autres fichiers
- Fuite données maif - Guide
- Historique copier coller - Guide
- Copier coller pdf - Guide
- Copier-coller - Accueil - Informatique
- Style d'écriture a copier coller - Guide
1 réponse
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonjour,
quand tu écris "erreur des la premiere ligne", de quelle ligne s'agit-il?
corrections de quelques erreurs évidentes:
quand tu écris "erreur des la premiere ligne", de quelle ligne s'agit-il?
corrections de quelques erreurs évidentes:
Option Explicit Private Sub copiecolle(fichier As String) Dim debut As Integer, position As Integer, text As Variant Dim lign As Integer, colon As Integer, x As Integer, y As Integer Dim sh As Worksheet Dim cl As Workbook Dim ligne_encours As Long 'ouvrir le premier fichier pour pouvoir copier coller ses données' Set cl = Workbooks.Open(fichier) 'Pour chaque feuille du fichier à copier, trouver le nombre de lignes et jusqu'à ce que la colonne 1 contienne un vide' Dim count As Long, cel As Range For Each sh In cl count = 0 For Each cel In Columns(1) ' pas prudent de ne pas spécifier l'onglet pour Columns(1) If cel.Value <> "" Then count = count + 1 End If Next cel MsgBox count 'comme la 2eme ligne de chaque feuille est une ligne d'entete en 2eme ligne qui ne m'interesse pas, _ je dois enlever 1 au compteur' count = count - 1 MsgBox count 'Pour chaque fichier de la liste, pour chaque feuilles de ce fichier, _ pour chaque ligne à partir de la ligne 3, _ je viens copier la ligne et la coller dans la feuil1 du fichier prévisionnel ' For y = 3 To count Workbooks("prévisionnel").Worksheet("Feuil1").Row.Value = sh.Rows(ligne_encours).Value ligne_encours = ligne_encours + 1 'j'incrémente ligne_encours afin que dans mon fichier prévisionnel, _ la copie continue à ce faire dans la colonne d'en dessous ' Next Next End Sub
L'erreur renvoyé est simplement
erreur de compilation sub ou function non définie
en surlignant en jaune
j'ai vu une erreur aussi j'ai écrit
or je pense que j'aurais du écrire évidemment
ça me renvoie le message
Seuls des commentaires peuvent apparaître après End Sub, End Function, ou End Property
maintenant en surlignant en bleu "option explicit"
Du coup je l'ai enlevé et on progresse !!
Le déboggeur indique
erreur 438 "propriété ou méthode non géré par cet objet" sur la ligne
rien n'a été collé mais par contre le premier rapport d'activité c'est ouvert !!
Donc c'est hyper positif alors je te remercie même si l'aventure est pas fini ^^
- celui dans lequel se trouve le code
- celui dont le nom est passé en paramètre à la fonction
- Workbooks("prévisionnel")
et les commentaires ajoutent à la confusion:
le premier fichier
du fichier à copier
chaque fichier de la liste
mon fichier prévisionnel
Quand tu ouvres le fichier "prévisionnel" (que j'ai mis en lien cjoint plus haut) tu arrives sur un formulaire . L'utilisateur n'a qu'a cliquer sur "importer" et aller chercher les rapports d'activités (j'en ai mis 2 ; ce sont les 2 autres liens cjoint).
Le chemin des fichiers sélectionner par l'utilisateurs (donc des rapports d'activité) s'inscrit dans une petite liste à gauche des boutons.
Et en cliquant sur traiter, le programme doit renvoyer dans la feuil1 du fichier "prévisionnel" l'ensemble des données des différentes feuilles des rapports d'activités(sauf la 1ere ligne qui contient une image normalement , la 2ieme ligne qui contient toujours les même entetes et une autre ligne bien en dessous -pour laquel la colonne A est vide- et qui ne m'intéresse pas).
J'espère que je suis clair et je m'excuse de mon manque de clarté passé en effet
Dans les commentaire du code plus haut
"fichier à copier" c'est donc un rapport d'activité (d'abord le premier de la liste dans le formulaire puis le 2ième...)
je reposte le fichier"prévisionnel" modifié grace à tes bons soins
https://www.cjoint.com/c/HDwn1hqcirW