IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

classeur fermé avec nom variable


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Inscrit en
    Avril 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Avril 2009
    Messages : 8
    Points : 2
    Points
    2
    Par défaut classeur fermé avec nom variable
    Bonjour à tous,j'éspère que je vais pouvoir trouver de l'aide au plus vite puisque ça urge;voici mon problème:j'essai de me connecter à un classeur excel sans l'ouvrir pour récupérer son contenu et le copier dans mon classeur resultat,ensuite je vais appliquer une serie de calcul sur ces données.jusque là c'est bon,là ou ça bloque c'est au niveau du nom de mon fichier puisqu'il est de la forme "machin_S 01.xls",il y a autant de fichier que de nombre de semaines(même structure) et l'utilisateur choisi d'abord la semaine voulue dans une liste deroulante et à partir de là la macro se connecte à ce fichier et récupère son contenu.si j'indique le chemin complet de l'un des fichier dans ma macro tout se passe bien et la copie se fait normalement mais si j'essaie de le faire de manière dynamique(former le chemin à partir du n° sem choisit) il me dit qu'il ne retrouve pas les feuilles dedans(par exemple,dans le fichier machin_S01" contient 4 feuilles:fe1,fe2,fe3,fe4. il me sort l'erreur suivante:le moteur de la base de donnée Microsoft Jet n'a pas pu trouver l'objet 'fe1$',assurez vous que l'objet existe.c'est dingue,ça marche un instant plus tôt et ensuite àa bloque.AIDEZ-MOI svp,c'est vraiment urgent!

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    682
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 682
    Points : 723
    Points
    723
    Par défaut
    Bonjour,

    Sans code joint, ça risque d'être dur de t'aider... ne serait-ce que pour voir où est l'erreur

    Ca doit venir du chemin que tu donnes lorsque tu veux ouvrir ton fichier. Si ça marche avec le chemin complet, il n'y a pas de raison que ça vienne d'autre part. Peut-être l'as-tu mal spécifié ou mal formé lorsque tu as essayé de le "composer". Au pire, essaies d'ouvrir (peu importe la méthode que tu utilises) les fichiers de la manière suivante : ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "*" & TaVariableReprésentantLaSemaine & ".xls"

  3. #3
    Candidat au Club
    Inscrit en
    Avril 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Avril 2009
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    Merci à toi de bien vouloir m'aider.Voilà comment j'ai essayé de former le chemin:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     rep = "D:\SUIVI QUALI\"  'le repertoire contenant le classeur principal           et les autres classeurs à ouvrir
         out = ActiveWorkbook.Name  
         Windows(out).Activate
         Sheets("check CC").Select  
         pref1 = Range("L7").Value  'le n° de la semaine choisi est stocké dans cette cellule
    nomEx1 = "fe_" & pref1 & ".xls"
      Fich1 = Dir(rep & nomEx1)
    If (Fich1 = "") Then
    MsgBox ("Le fichier source " & Fich1 & " est introuvable,veuillez vérifier son emplacement SVP!")
    Else
    .....
    j'utilisais déjà ce traitement dans d'autres projets et ça marchait nickel,je ne vois vraiment pas pourquoi ça plante cette fois-ci.peut-tu voir ça avec moi stp?

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    682
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 682
    Points : 723
    Points
    723
    Par défaut
    Pense aux balises à l'avenir, c'est assez dur à lire sinon

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub recherche()
     
        With Application.FileSearch
            .NewSearch
            .RefreshScopes
            .LookIn = "D:\SUIVI QUALI\" 
            .Filename = "*"&pref1&".*"
            .SearchSubFolders = True
            .Execute
            For Ctr = 1 To .FoundFiles.Count
                Workbooks.Open (.FoundFiles(Ctr)) 'Ca te les ouvre mais tu peux faire ce que tu veux ici (par exemple, afficher les résultats)  
            Next
        End With
    End Sub
    Tente ça, avec tes mêmes variables du début de ton code etc. Essaie de les ouvrir déjà voir s'ils sont bien trouvés et qu'il y a bien toutes les feuilles etc. Puis, tu peux adapter comme tu veux. Ca marche niquel comme ça.

    EDIT : fais un petit MsgBox(Fich1) et regarde si tu retrouves EXACTEMENT le chemin du fichier que tu veux ouvrir.

  5. #5
    Candidat au Club
    Inscrit en
    Avril 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Avril 2009
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    Merci beaucoup DeaD78,je vais essayer ça tout de suite.En fait j'étais en train de refléchir à l'emplacement de la ft que tu viens de me proposer:
    en fait j'ai définit les feuilles sources et les feuilles destination et j'utilise la syntaxe suivante pour réaliser la cnx et la copie à partir des fichiers fermés.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
     
      ConsoDatas Fich1, Source1, Cible1  'ces instructions sont placées aprés le                                                   else 
      ConsoDatas Fich2, Source2, Cible1 
     
     ''et voici la ft que j'utilise pour ça
     
    Public Sub ConsoDatas(NomFichier$, FeuilleSource$, FeuilleCible$)
    'Va chercher dans le classeur NomFichier (sans l'ouvrir) les données
    'de la feuille FeuilleSource et les copie dans la feuille FeuilleCible
    'du classeur actif, à la suite des données (éventuellement) déjà présentes.
    '(La ligne d'entêtes de FeuilleSource n'est pas importée)
    'nécessite une référence à la librairie
    'Microsoft ActiveX Data Object 2.x Library
    Dim rsData As ADODB.Recordset
    Dim szConnect As String
    Dim szSQL As String
    Dim Li&, FeuilleDest
     
        ''' Crée la chaîne de connexion
        szConnect = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
            "Data Source=" & NomFichier & ";" & _
            "Extended Properties=Excel 8.0;"
     
        ' La requête est basée sur le nom de la feuille. Ce nom
        ' doit se terminer par un $ et doit être entouré de crochets droits.
        szSQL = "SELECT * FROM [" & FeuilleSource & "$];"
     
        Set rsData = New ADODB.Recordset
        rsData.Open szSQL, szConnect, adOpenForwardOnly, _
            adLockReadOnly, adCmdText
     
        'où envoyer les données :
        Set FeuilleDest = ActiveWorkbook.Sheets(FeuilleCible)
        Li = FeuilleDest.Range("A65536").End(xlUp).Row + 1
        'envoi sur la première ligne vide
        If Not rsData.EOF Then
          FeuilleDest.Range("A" & Li).CopyFromRecordset rsData
        Else
          'si la source était vide...
          MsgBox "Aucun enregistrement renvoyé.", vbCritical
        End If
     
        ''' On nettoie pour finir...
        rsData.Close
        Set rsData = Nothing
     
    End Sub

    désolée de t'embêter encore mais comme je suis novice je doute sur l'emplacement de la methode que tu m'a proposé,comment l'integrer à mon code?

  6. #6
    Candidat au Club
    Inscrit en
    Avril 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Avril 2009
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    j'ai fais quelques manipulations pour comprendre la source du probléme:en fait le système ne reconnnait pas le nom de la feuille puisqu'il est toujours positionné sur le classeur principal,je manipule des fichiers fermés (et je veux que ça le reste) donc il n'y a pas moyen je suppose pour indiquer au système qu'il doit se positionner sur le fichier fermé auquel on est connecté..à moin que je ne me trompe...quel casse-tête! pouvez-vous m'éclairer svp?

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    682
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 682
    Points : 723
    Points
    723
    Par défaut
    Bonjour,

    Ne peux-tu simplement pas ouvrir puis fermer les fichiers dont tu as besoin ? Ca revient au même que de manipuler des fichiers fermés De plus, tu désactives les affichages, les updates etc. avant et tu as même des options pour ouvrir les fichiers sans qu'ils "apparaissent". Il faut regarder dans l'aide en ligne pour la méthode Open ou autres.

    Que penses-tu de ça ?

  8. #8
    Candidat au Club
    Inscrit en
    Avril 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Avril 2009
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    Je pense que c'est ce que je vais faire puisque jusqu'à présent je n'ai pas trouvé de solutions.En fait je voulais laisser ça comme dernier recours.Je vais me pencher sur l'aide en ligne pour voir comment faire (je ne sais pas encore comment ouvrir les fichiers en "hidden").N'empêche que je vais creuser un peu plus encore en parallèle sur mon souci parce qu'il devrait y avoir une solution certainement.
    Merci beaucoup en tous cas d'avoir pris le temps de te pencher sur la question

  9. #9
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Si tu mets un point d'arrêt sur la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    szConnect = "Provider=Microsoft.Jet.OLEDB.4.0;" ...
    et que tu lances ton traitement, peux-tu nous dire ce que contient exactement la variable NomFichier au moment de l'arrêt.

  10. #10
    Candidat au Club
    Inscrit en
    Avril 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Avril 2009
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    ça contient le nom du classeur source ouvert et à partir duquel il y aura une copie,exemple:machin_S01.et le debuggueur m'affiche ensuite le msg d'erreur que je vous ai déjà cité et se positionne à l'instruction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
       rsData.Open szSQL, szConnect, adOpenForwardOnly, _
            adLockReadOnly, adCmdText
    je ne comprend pas pourquoi il ne reconnait pas les feuilles?
    si tu quelqu'un a une explication à me fournir je lui serais vraiment reconnaissante

  11. #11
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Citation Envoyé par wafdou Voir le message
    exemple:machin_S01.
    Citation Envoyé par AlainTech Voir le message
    peux-tu nous dire ce que contient exactement la variable NomFichier au moment de l'arrêt.

Discussions similaires

  1. [XL-2007] Recherchev vers classeurs fermés et nom du fichier variable
    Par charli.b2802 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 19/07/2013, 15h49
  2. Recherche v dans un classeur fermé avec variable
    Par JonathanF dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 26/02/2013, 16h47
  3. [XL-2003] Enregistrer classeur avec nom variable et chemin variable
    Par Lufia dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 08/10/2009, 23h29
  4. Réponses: 4
    Dernier message: 02/10/2007, 12h30
  5. Effacer folder avec nom variable: zero's + nom variable
    Par chapeau_melon dans le forum VBScript
    Réponses: 2
    Dernier message: 12/07/2007, 21h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo