Copier coller des données d'autres fichiers

Fermé
mickmac Messages postés 413 Date d'inscription jeudi 25 août 2011 Statut Membre Dernière intervention 15 août 2019 - Modifié le 22 avril 2018 à 13:49
mickmac Messages postés 413 Date d'inscription jeudi 25 août 2011 Statut Membre Dernière intervention 15 août 2019 - 22 avril 2018 à 21:16
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)



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:

1 réponse

yg_be Messages postés 22698 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 avril 2024 1 471
Modifié le 22 avril 2018 à 14:47
bonjour,
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
0
mickmac Messages postés 413 Date d'inscription jeudi 25 août 2011 Statut Membre Dernière intervention 15 août 2019 6
Modifié le 22 avril 2018 à 14:56
Bonjour et merci de ta réponse
L'erreur renvoyé est simplement
erreur de compilation sub ou function non définie


en surlignant en jaune

Private Sub copiecolle(fichier As String)


j'ai vu une erreur aussi j'ai écrit
Workbooks("prévisionnel").Worksheet("Feuil1").Row.Value = 


or je pense que j'aurais du écrire évidemment

Workbooks("prévisionnel").Worksheet("Feuil1").Row(y).Value 
0
yg_be Messages postés 22698 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 avril 2024 1 471 > mickmac Messages postés 413 Date d'inscription jeudi 25 août 2011 Statut Membre Dernière intervention 15 août 2019
Modifié le 22 avril 2018 à 15:09
peut-être:
Workbooks("prévisionnel").Worksheet("Feuil1").Rows(ligne_encours).Value = sh.Rows(y).Value
0
mickmac Messages postés 413 Date d'inscription jeudi 25 août 2011 Statut Membre Dernière intervention 15 août 2019 6
Modifié le 22 avril 2018 à 15:25
c'est pas faux d'ailleurs ^^ merci

ç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
For Each sh In cl

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 ^^
0
yg_be Messages postés 22698 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 avril 2024 1 471 > mickmac Messages postés 413 Date d'inscription jeudi 25 août 2011 Statut Membre Dernière intervention 15 août 2019
22 avril 2018 à 15:19
c'est assez confus, car tu aurais trois fichiers:
- 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
0
mickmac Messages postés 413 Date d'inscription jeudi 25 août 2011 Statut Membre Dernière intervention 15 août 2019 6
Modifié le 22 avril 2018 à 15:54
en fait j'ai le fichier "prévisionnel" qui est celui qui regroupera en 1 tableaux les feuilles des 2 autres fichiers (rapports d'activités).
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
0