Extraire des données en vba

Nimbus

XLDnaute Occasionnel
Bonjour à tous,

Je cherche à créer une macros qui serait capable d'aller récupérer les infos présent dans la feuille "Synthese" du document (MC_Shootage) et me les copier / coller dans mon nouveau document (MC_commun2) dans la feuille "Donnees".

Voici ce que j'aai essayé de faire mais, il m'affiche se message d'erreur: "\\Gpao\commun\30_QUALITE\307_Gestion_de_service\AAAA-Main-Courante-Atelier est introuvable". Alors que le lien est juste j'ai tout vérifié. Ce message s'affiche sur la ligne en rouge:

Code:
Sub Dechet_Finition_Hebdo()

'Identification des chemins et des fichiers

    Dim Chemin As String
    Chemin = "\\Gpao\commun\30_QUALITE\307_Gestion_de_service\AAAA-Main-Courante-Atelier"
    Dim Fichier As String
    Semaine = InputBox("N° de la semaine", "SEMAINE", DatePart("ww", Date, vbMonday) - 1)
    If Semaine <= 9 Then
    Fichier = "MC_Shootage" & Semaine & ".xlsm"
    Else: Fichier = "MC_Shootage" & Semaine & ".xlsm"
    End If
    
'Transfert des données

    Dim j As Integer
    j = 1
    
    ChDir Chemin
    [COLOR="#FF0000"]Workbooks.Open Filename:=Chemin & "\" & Fichier, UpdateLinks:=0, ReadOnly:=True[/COLOR]
    
    Sheets("Synthese").Copy Before:= _
        Workbooks("MC_commun2.xlsm").Sheets("Donnees")
    
    Workbooks(Fichier).Close SaveChanges:=False

    Workbooks("MC_commun2.xlsm").Activate
     
    j = Application.Run("Copie_MC_Shootage", "Synthese", j)
    
End Sub

Quelqu'un pourrait m'aider à résoudre mon pb svp (doc en PJ).

Merci pour votre aide

Nimbus
 

Pièces jointes

  • MC_commun2.xlsm
    40.7 KB · Affichages: 30
  • MC_commun2.xlsm
    40.7 KB · Affichages: 25
  • MC_commun2.xlsm
    40.7 KB · Affichages: 29
  • MC_Shootage.xlsm
    222.8 KB · Affichages: 24
  • MC_Shootage.xlsm
    222.8 KB · Affichages: 26
  • MC_Shootage.xlsm
    222.8 KB · Affichages: 32

vgendron

XLDnaute Barbatruc
Re : Extraire des données en vba

je viens de tester ton fichier en adaptant les directory à mon pc..
et comme le "MC_Shootage19.xlsm" n'existe pas. ca plante la ligne après le ChDir Chemin

1) es tu bien sur que ton chemin d'accès existe?
attention aux espaces et aux majuscules..

j'ai nommé un fichier "MC_Shootage19.xlsm" .. et la. la macro se poursuit bien.
 

Nimbus

XLDnaute Occasionnel
Re : Extraire des données en vba

Le chemin d'accès est juste j'en suis sur
Il note "MC_Shootage19.xlsm" ou le 19 est le numéro de la semaine.
C'est pour ça j'aimis cette ligne:

Code:
If Semaine <= 9 Then
     Fichier = "MC_Shootage" & Semaine & ".xlsm"
     Else: Fichier = "MC_Shootage" & Semaine & ".xlsm"
     End If

Je pensais que ça suffisait...
Sinon as tu une autre idée?
 

vgendron

XLDnaute Barbatruc
Re : Extraire des données en vba

une question en passant

Code:
If Semaine <= 9 Then
        Fichier = "MC_Shootage" & Semaine & ".xlsm"
        Else: Fichier = "MC_Shootage" & Semaine & ".xlsm"
    End If

c'est quoi l'intérêt??
le résultat de ce test "IF" sera de toute façon le meme.. ??
 

Nimbus

XLDnaute Occasionnel
Re : Extraire des données en vba

Pour ta 1ère remarque:
En effet, le "Else" est de trop mais même si je l'enlève, cela ne change rien...

Pour la seconde:

Je voulais écrire une ligne de pgm qui me copie / colle mes infos de MC_Shootage dans MC_commun2.

Si ce n'est pas ça, comment faut il l'écrire?

Merci pour ton aide
 

vgendron

XLDnaute Barbatruc
Re : Extraire des données en vba

bah. à priorir c'est déjà fait par ta macro..

regarde ton code ci dessous que j'ai commenté
Code:
Sub Dechet_Finition_Hebdo()

'Identification des chemins et des fichiers

    Dim Chemin As String
    Dim Fichier As String 'contient le nom du fichier source: MC_...
    
    Chemin = "ton chemin complet avec lettre de lecteur"
    
    '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)
    
    'test à redéfinir:
    'si le numéro de semaine est <=9 alors.. faire quelque chose de particulier
    'sinon, Fichier ="MC_Shootage" & Semaine & ".xlsm"
    
    'If Semaine <= 9 Then
        Fichier = "MC_Shootage" & Semaine & ".xlsm"
     '   Else: Fichier = "MC_Shootage" & Semaine & ".xlsm"
    'End If
    
'Transfert des données

    'Dim j As Integer
   ' j = 1
    
    ChDir Chemin
    'ouverture du fichier en lecture seule
    Workbooks.Open Filename:=Chemin & "\" & Fichier, UpdateLinks:=0, ReadOnly:=True
    
    'recopie de l'onglet Synthese dans le fichier destination MC_Commun2.xlsm" avant l'onglet Donnees
    Sheets("Synthese").Copy Before:=Workbooks("MC_commun2.xlsm").Sheets("Donnees")
    
    'fermeture du fichier source
    Workbooks(Fichier).Close SaveChanges:=False

   ' lignes inutiles
   ' Workbooks("MC_commun2.xlsm").Activate
     
    'j = Application.Run("Copie_MC_Shootage", "Synthese", j)
    
End Sub
 

vgendron

XLDnaute Barbatruc
Re : Extraire des données en vba

la ligne de pgm qui copie colle.. c'est celle ci

'recopie de l'onglet Synthese dans le fichier destination MC_Commun2.xlsm" avant l'onglet Donnees
Sheets("Synthese").Copy Before:=Workbooks("MC_commun2.xlsm").Sheets("Donnees")
 

Nimbus

XLDnaute Occasionnel
Re : Extraire des données en vba

Ok super merci.
Par contre, il y a toujours le soucis du chemin d'accés qui note le N° de la semaine ds le chemin d'accés et qui du coup fait tout beuger...

Je ne sais pas comment faire... Aurai tu une idée?

Merci
 

vgendron

XLDnaute Barbatruc
Re : Extraire des données en vba

bah oui. forcément... regarde mon post #4..
si le fichier n'existe pas, ca plante.. normal. excel ne sait pas ouvrir un fichier qui n'existe pas (excel et les autres d'ailleurs)

c'est pour ca que j'avais renommé un fichier avec 19..
 

Bebere

XLDnaute Barbatruc
Re : Extraire des données en vba

bonjour Nimbus,Vgendron
avec une fonction pour tester existence du fichier à ouvrir
à tester

Code:
Sub Dechet_Finition_Hebdo()

'Identification des chemins et des fichiers

    Dim Chemin As String, Fichier As String
    Chemin = ThisWorkbook.Path    '"\\Gpao\commun\30_QUALITE\307_Gestion_de_service\Lyse\AAAA-Main-Courante-Atelier"
    Semaine = InputBox("N° de la semaine", "SEMAINE", DatePart("ww", Date, vbMonday) - 1)

    If Semaine <= 9 Then
        Fichier = "MC_Shootage" & Semaine & ".xlsm"

    End If
    If Fichier = "" Then Exit Sub
    'Transfert des données

    Dim j As Integer
    j = 1
    If FichierExiste(Chemin & "\" & Fichier) Then
        Workbooks.Open Filename:=Chemin & "\" & Fichier, UpdateLinks:=0, ReadOnly:=True

        Sheets("Synthese").Copy Before:= _
                                Workbooks("MC_commun2.xlsm").Sheets("Donnees")

        Workbooks(Fichier).Close SaveChanges:=False

        Workbooks("MC_commun2.xlsm").Activate
    End If
    '    j = Application.Run("Copie_MC_Shootage", "Synthese", j)

End Sub

Function FichierExiste(NomFichier As String) As Boolean
    FichierExiste = Dir(NomFichier) <> "" And NomFichier <> ""
End Function
 

Membres actuellement en ligne

Statistiques des forums

Discussions
312 196
Messages
2 086 099
Membres
103 116
dernier inscrit
kutobi87