Copier / coller des données avec vba

Nimbus

XLDnaute Occasionnel
Bonjour à tous,

J'ai un petit soucis avec mon programme vba:

Je veux que mon pgm copie et colle des infos de 4 fichiers différents situer dans un dossier commun "MC_Commun".
Il doit ouvrir les fichiers, copier les infos de l'onglet "Synthese" de chacun d'eux et les coller dans l'onglet "Donnees" du fichier "MC_Commun" et se refermer.

Le soucis c'est que le pgm ouvre et ferme bien mes fichiers mais, ne me colle rien dans l'onglet "Donnees"...

Quelqu'un aurait une idée de ou est mon erreur?

Voici le pgm:

Code:
Option Explicit
Sub Dechet_Finition_Hebdo()

'Identification des chemins et des fichiers

    Dim Chemin As String, WbDestination As Workbook, WbSource As Workbook
    Dim Fichier(1 To 4) As String
    Dim i As Integer
    Dim cel As Range
    Dim Semaine As Long, L As Long, x As Long
    Set WbDestination = ThisWorkbook
    L = WbDestination.Worksheets("Donnees").Range("A65536").End(xlUp).Row + 1
    WbDestination.Worksheets("Donnees").Range("A6:N" & L).ClearContents
  
    Chemin = ThisWorkbook.Path    'si les 2 fichiers dans même dossier
    
    'demande à l'utilisateur le numéro de semaine, semaine en cours par défaut
    Semaine = InputBox("N° de la semaine", "SEMAINE", DatePart("ww", Date, vbMonday) - 1)
    If Semaine = 0 Then Exit Sub
    Fichier(1) = "MC_Shootage.xlsm"
    Fichier(2) = "MC_Plastique.xlsm"
    Fichier(3) = "MC_Finition.xlsm"
    Fichier(4) = "MC_Expédition.xlsm"
    
For i = 1 To 4
    If FichierExiste(Chemin & "\" & Fichier(i)) Then

    'ouverture du fichier en lecture seule
        Workbooks.Open Filename:=Chemin & "\" & Fichier(i), UpdateLinks:=0, ReadOnly:=True
        Set WbSource = ActiveWorkbook
        On Error Resume Next
        x = Application.WorksheetFunction.CountIf(WbSource.Worksheets("Synthese").Range("B5:B1000"), "=" & Semaine)
            If x > 0 Then
        With WbSource.Worksheets("Synthese")
                'Transfert des données
                'exemple pour ajout de ligne(s)
                For Each cel In .Range("B6:B1000")
                    If cel = Semaine Then
                        With WbDestination.Worksheets("Donnees")
                        L = .Range("A" & .Row.Count).End(xlUp).Row + 1
                         .Range("A" & cel.Row & ":N" & cel.Row).Copy Destination:=WbDestination.Worksheets("Donnees").Range("A" & L)
                    End With
                    End If
                Next cel
        End With
    End If
        WbSource.Close SaveChanges:=False
    End If
    Next i
End Sub
Function FichierExiste(NomFichier As String) As Boolean
    FichierExiste = Dir(NomFichier) <> "" And NomFichier <> ""
End Function

Merci pour votre aide
 

Modeste

XLDnaute Barbatruc
Re : Copier / coller des données avec vba

Bonjour Nimbus,

Sans fichiers pour tester, ça risque d'être dur ...

En parcourant (sans trop d'espoir) ton code, il me semble tout de même qu'à la ligne
"L = .Range("A" & .Row.Count).End(xlUp).Row + 1" il faudrait écrire plutôt ".Rows.Count" ... pour le reste, je donne ma langue au chat !!

[Edit:] tant qu'à faire, autant vérifier autre chose: "Semaine = Inputbox ..." implique que Semaine sera de type String ... si dans ton fichier, c'est du numérique, tu auras inévitablement un problème aussi :rolleyes:
 
Dernière édition:

Nimbus

XLDnaute Occasionnel
Re : Copier / coller des données avec vba

Bonjour Modeste,

Merci pour ton aide, mais malheureusement le code ne fonctionne toujours pas...
Je te joint les fichiers si cela peut t'aider!

Merci pour ton aide.

Nimbus
 

Pièces jointes

  • docs.zip
    752.7 KB · Affichages: 72
  • MC_commun.xlsm
    40.1 KB · Affichages: 27
  • MC_commun.xlsm
    40.1 KB · Affichages: 30
  • MC_commun.xlsm
    40.1 KB · Affichages: 29
  • MC_Finition.xlsm
    477.3 KB · Affichages: 50
  • MC_Finition.xlsm
    477.3 KB · Affichages: 47
  • MC_Finition.xlsm
    477.3 KB · Affichages: 51
  • MC_Shootage.xlsm
    221 KB · Affichages: 27
  • MC_Shootage.xlsm
    221 KB · Affichages: 38
  • MC_Shootage.xlsm
    221 KB · Affichages: 32

Modeste

XLDnaute Barbatruc
Re : Copier / coller des données avec vba

Bonsoir Nimbus,

Quand tu joins une série de fichiers, précise dans lequel de ces derniers on peut imaginer retrouver le code en question :eek:
J'ai fini par trouver une procédure au nom identique dans le classeur MC_commun et là, surprise! ... Le code ne correspond vraiment plus à celui que tu avais fourni au départ!? Comment veux-tu que le malheureux mortel s'y retrouve???

Si tu as besoin d'un coup de main, il faut au moins nous indiquer la porte d'entrée, la direction à suivre, etc.
 

Nimbus

XLDnaute Occasionnel
Re : Copier / coller des données avec vba

Bonjour Modeste,

Oulala oui en effet je me suis trompé de fichier...

Le code qui me pose problème se trouve dans "MC_Commun".
Tous les autres fichiers envoyés sont ceux dans lesquels ils faut aller récupérer les infos de l'onglet "Synthese".

Merci pour ton aide et désolé pour cette erreur...

Nimbus
 

Pièces jointes

  • MC_Commun.xlsm
    117.7 KB · Affichages: 28
  • MC_Commun.xlsm
    117.7 KB · Affichages: 36
  • MC_Commun.xlsm
    117.7 KB · Affichages: 38

Modeste

XLDnaute Barbatruc
Re : Copier / coller des données avec vba

Bonjour,

De ce que j'ai pu voir, en exécutant le code, il y avait bien le ".Rows.Count" que tu as déjà corrigé.
L'autre souci possible avec "semaine = Inputbox ..." n'en est pas un, puisque tu as déclaré la variable semaine As Long (ceci dit, pour un n° de semaine, un Byte devrait suffire).
Il y a une autre erreur, par contre, au niveau de tes deux blocs With imbriqués: le premier End With doit remonter d'une ligne: juste avant de faire le copier-coller.

Avec ces deux corrections, le fichier destination est "garni" ... tu auras sans doute encore l'une ou l'autre chose à régler, me semble-t-il, mais je te laisse le soin de les découvrir :) ... Vois déjà si le copier-coller fonctionne comme tu le souhaitais.

PS: pour une prochaine discussion, pense à "alléger" tes fichiers: nous n'avons pas besoin de 1000 lignes! Une cinquantaine devrait suffire, pourvu que tu nous précises avec quelle semaine on peut tester.
 

Nimbus

XLDnaute Occasionnel
Re : Copier / coller des données avec vba

Modeste,

Merci pour ton aide, le copier / coller fonctionne très bien dorénavant.
Il y a qq "trucks" qu'il faut que je modifie pour que tout soit niquel mais le plus gros fonctionne donc MERCI!
 

Discussions similaires

Réponses
2
Affichages
140

Statistiques des forums

Discussions
312 084
Messages
2 085 194
Membres
102 811
dernier inscrit
caroline29260