Chercher un document en VB sur excel

Résolu
ced -  
pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,

j'aimerai pouvoir aller chercher des infos dans un document excel fermé a partir d'une macro d'un autre document excel.

pour le moment mon code est :

        LabelDoc = Cells(34 + i, 2).Value 
        Windows(LabelDoc).Activate   ' "LabelDoc" est le nom de mon document excel ou se trouve les infos que je cherche         
        Application.Goto Reference:="TableListe" 
        Selection.Copy 
        Windows("Test de macro.xls").Activate 
        Sheets("Liste").Activate 
        Cells(cellule, 1).Select 
        ActiveSheet.Paste


la ligne qui me permet d'acceder au document ou se trouve les infos que je cherche est :
" Windows(LabelDoc).Activate "

Le problème est que je suis obligé d'ouvrir mon document avant de lancer ma macro sinon le message d'erreur suivant apparait : "l'indice n'appartient pas a la selection".
En gros il ne trouve pas mon document; en sachant aussi que tous mes documents sont dans le même fichier.

merci d'avance pour vos aides !

1 réponse

  1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    Bonjour,
    aller chercher des infos dans un document excel fermé n'est pas si évident que cela. Vous trouverez ici tout ce que vous avez besoin de savoir pour cela.
    Personnellement, je préfère :
    - ouvrir le classeur concerné,
    Workbooks.Open Filename:= "Chemin du repertoire du fichier\X.xls " 

    - piocher les infos utiles
    - fermer le classeur
    ActiveWorkbook.Close SaveChanges:=False

    De la doc la dessus à cette adresse...
    Cordialement,
    -- Tout problème à sa solution. S'il n'y a pas de solution, ou est le problème? --
    0
    1. ced
       
      bonjour pijaku,
      deja merci pour ton interet.

      ta solution pourrait m'aller mais en dernier recourt,
      mais j'ai une autre question pour toi si tu veux bien :
      dans la ligne de code
      Workbooks.Open Filename:= "Chemin du repertoire du fichier\X.xls " 

      est-il possible de mettre une variable après le chemin du répertoire? je m'explique, j'ai plusieurs classeur a ouvrir et les noms de ces classeurs sont dans une feuille "paramètres" de mon classeur d'origine. Quel est le code pour faire cela?

      merci !!!
      0
    2. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      Supposons que tes noms de classeur soient écrit en Feuil2 de A1à A20, un nom par cellule, et que ton chemin d'accès soit toujours le même.
      Tu peux faire quelque chose comme ça :
      Dim chemin, nomfic As String
      Dim i As Integer
      chemin = "C:\travail\fichiers Excel\"
      For i = 1 to 20
      nomfic = Sheets("Feuil2").Cells(i ,1).Value
      Workbooks.Open Filename:= chemin & nomfic
      'ici copier les valeurs utiles
      ActiveWorkbook.Close SaveChanges:=False
      Next i

      Attention à bien mettre l'extension (.xls) dans tes noms de fichiers de A1 à A20 ex : toto.xls (pas toto)
      0
    3. ced
       
      Ce code est super !!
      dernière question :
      entre l'ouverture et la fermeture je fait une copie d'un tableau
      Application.Goto Reference:="TableListe"
              Selection.Copy

      le seul truc, c'est que quand le doc ce ferme avec le "ActiveWorkbook.Close", il me demande si je veux sauvegarder la copie que j'ai effectuée, en sachant que je n'en ai plus besoin. Comment annuler cette demande?
      0
    4. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      ??????? Peut être cela :
      Application.DisplayAlerts = False
      ActiveWorkbook.Close SaveChanges:=False
      Next i 
      'bla bla bla
      Application.DisplayAlerts = True
      End Sub
      
      0
    5. ced
       
      t'es un génie !
      vraiment merci beaucoup, grace a toi le code a été terminer en 20 min alors que sa fait 3 jours que je suis dessus! alors encore merci !!!!!!!!
      0