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 :

[VBA-E]récupérer donnée autre fichier


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    86
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Avril 2007
    Messages : 86
    Points : 52
    Points
    52
    Par défaut [VBA-E]récupérer donnée autre fichier
    Salut à tous,
    Je suis actuellement en train de reprendre une base de donné sur du matériel, actuellement chaque appareil est placé dans un dossier à son nom et puis dans un autre dossier qui représente la famille du matériel ( exemple : pour le matérielle K012 qui est une alimentation : C:\...\Alimentation\K012\K012.xls), mon travail est de faire une base commune plus précise.
    Je recherche donc un moyen de récupérer une donné ( toujours placé au même endroit dans les fiches ).
    J'ai commencé par concaténer certaine info pour faire des hyperliens vers les fiches, et je pensais faire = et cliquer dans la cellule qui correspondait à l'info recherché, pour récupérer celle ci, mais sur plus de 2000 matériels ce n'est pas envisageable, on m'a donc conseillé de faire une macro permettant de récupérer l'info, mais je n'y connais rien :j'ai trouvé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub Macro3()
    Workbooks.Open Filename:= _
    "C:\........\K012\K012.xls"
    Windows("Monfichier.xls").Activate
    Range("B2").Select
    ActiveCell.FormulaR1C1 = "=[K012.xls]ENR030!R18C3"
    Workbooks("K012.xls").Close
    End Sub
    j'ai trouvé cela en manipulant et allant voir l'info sur VB6
    Je cherche donc un moyen de faire une boucle permettant pour chaque ligne d'aller chercher l'info dans le fichier spécifique.
    si quelqu'un à une idée merci d'avance.
    ferronimus

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Tu es sur Excel (VBA-E) ou sur VB6 ? Parce que ta macro, là c'est du VBA Excel, pas du VB6

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Âge : 61
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 563
    Points : 1 691
    Points
    1 691
    Par défaut
    salut
    ça dépend aussi si tu veux
    récuperer tes fichier et en faire un fichier avec les alimentations ( k012, k..)
    ou récuperer tt les fichiers Ko12 pour avoir tout ce qui compose le k012.
    mais sinon, tu as tout interet a ne pas lier tout ça, mais a recréer des fichier.
    et après ça dépend si tout tes vieux fichiers ont la même organistion interne
    si par exemple c'est une fiche par fichier, avec le nom k012 toujour dans la même cellule, ou si c'est plus complexe, et que pour chaque materiel, tu soit obligé de le visionner. mais en gros
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    for each fichier in tel répertoire
    fichier open
    ma fiche copie
    mon fichier. colle
    vieux fichier close
    next fichier
    un peu simpliste ce que je te dis là, mais à la fois on en sait pas assez

  4. #4
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    86
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Avril 2007
    Messages : 86
    Points : 52
    Points
    52
    Par défaut
    je suis en effet en Excel (VBA-E) et je cherche à récupérer une info toujours placé dans la même cellule dans chaque fichier de matériel, pour la placé dans mon fichier final

    Mais est-il possible d'utiliser des liens hypertexte qui mène à mes fiches pour récupérer l'info rechercher
    du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub Macro3()
        Workbooks.Open Filename:= lien hypertexte de la cellule A3 vers ma fiche 
        Windows("monfichier.xls").Activate
        Range("B3").Select
        ActiveCell.FormulaR1C1 = "=[MAFICHE.xls]ENR030!R18C3"
        Workbooks("MAFICHE.xls").Close
    End Sub
    et je n'aurais plus qu'a faire une boucle pour faire cela à tous lesfichier

  5. #5
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Tu mets une adresse pour le lien hypertexte mais tous tes liens ne sont pas à la même adresse, ou alors tu ouvres toujours le même fichier...
    Comment sont organisés ces liens ?

    Ensuite, tu mets
    Windows("monfichier.xls").Activate
    Range("B3").Select
    ActiveCell.FormulaR1C1 = "=[MAFICHE.xls]ENR030!R18C3"
    et je ne pense pas que tu places toujours cette formule dans la même cellule. Tu incrémentes le No de ligne pour chaque formule ?

  6. #6
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    86
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Avril 2007
    Messages : 86
    Points : 52
    Points
    52
    Par défaut
    en effet chaque matériel à un lien hypertexte différent et ils ne sont pas dans le même dossier
    si on prend un exemple le matériel K012 qui est une alimentation
    il se trouve dans C:\...\matériel\alimentation\k012\k012.xls
    la partie en rouge est commune à chaque matériel
    par contre chaque fiche matériel est fait de la même façon, l'information recherché est toujours dans la même cellule
    j'ai pencer à une structure ( désolé pour la synthaxe)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    sub macro()
    Dim i As Integer   
    For i = 1 To 2000 Step 1 
     
    Workbooks.Open Filename:= lien hypertexte de la cellule Ai
        Windows("Monfichier.xls").Activate
        Range(Bi).Select
        ActiveCell.FormulaR1C1 = "=[Ai.xls]ENR030!R18C3"
        Workbooks("Ai.xls").Close
     
    Next i
    End Sub

  7. #7
    Membre expérimenté
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Âge : 61
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 563
    Points : 1 691
    Points
    1 691
    Par défaut
    pas besoin d'ouvrir tes fichier pour faire des liens hypertexte qui i menent
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="C:\Monfichier.xls"
    mais ce n'est pas ça dont tu as besoin
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Dim stFichier
     stFichier = Application.GetOpenFilename
       With Application.FileSearch
       .NewSearch
       .LookIn = chemin(stFichier)
       .Execute
        On Error Resume Next
        Application.ScreenUpdating = False
          For Each f In .FoundFiles
          Workbooks.Open f
    apres ça diverge
    cells (ma detination) = range("a3")
    ou cells(ma detination) = range("a3") avec une liaison
    ou tu veux juste ouvrir le fichier
    ou juste copier coller

  8. #8
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    86
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Avril 2007
    Messages : 86
    Points : 52
    Points
    52
    Par défaut
    salut
    il n'est pas nécessaire d'ouvrir lefichier il faut seulement récupérer la valeur d'une certaine cellule et faire en sorte qu'elle change automatiquement si lefichier source change
    mais personne ne ma répondu si on pouvait utilisé un lien hypertexte (présent dans ma feuille de calcul), dans le macro, pour récupérer la dite valeur
    ferronimus

  9. #9
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Oui, tu peux récupérer la valeur si la mise à jour est automatique. C'est comme pour les autres cellules.
    Dans Excel -> Menu Edition -> Liaisons -> Mise à jour automatique (par défaut)

  10. #10
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    86
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Avril 2007
    Messages : 86
    Points : 52
    Points
    52
    Par défaut
    Voila, j'ai un peu travaillé sur mon projet de refaire une nouvelle base de donnée,
    en incorporant des données d'autre fichier.
    J'ai donc refais un programme

    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
    Sub Macro1()
     
    Dim fichxl As String
    Dim i As Integer
     
    For i = 3 To 2000
     
     
    fichxl = Dir("C:\...\" & Range("2,i").Select & "\" & Range("7,i").Select & "\" & Range("7,i").Select & ".XLS")
     
    Workbooks.Open Filename:= _
    fichxl
        Windows("nouvelle base.xls").Activate
        Range("17,i").Select
        ActiveCell.FormulaR1C1 = "=[fichxl]ENR030!R18C3"
        Workbooks(fichxl).Close
     
     
    Next i
    End Sub
    mais il ne fonctionne pas je comprend pas pourquoi si quelqu'un à une idée
    merci d'avance
    ferronimus

  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 ferronimus
    mais il ne fonctionne pas je comprend pas pourquoi si quelqu'un à une idée
    Non, on n'a pas d'idée...

    Si tu ne nous dis pas ce qui ne fonctionne pas, on ne peut faire qu'essayer de deviner.
    Et parfois, on n'en a pas le courage...

  12. #12
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    +1
    Tout comme Alain, on ne peut que conjecturer mais déjà ferronimus t'a dit quelque chose, tu devrais lire, c'est intéressant pour ton problème.
    Ensuite, après avoir inséré ton lien, ajoute cette ligne
    Ça mange pas de pain

  13. #13
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    86
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Avril 2007
    Messages : 86
    Points : 52
    Points
    52
    Par défaut
    quand je parlais d'idée je pensais plus à un problème de synthaxe en effet mon problème vient de la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fichxl = Dir("C:\...\" & Range("2,i").Select & "\" & Range("7,i").Select & "\" & Range("7,i").Select & ".XLS")
    problème débogage
    Etant donnée que ces cette ligne la qui à un problème, rajouter Application.calculate ne donnerait rien.

  14. #14
    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
    Euh... Qu'espères-tu obtenir avec cette syntaxe:

  15. #15
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    86
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Avril 2007
    Messages : 86
    Points : 52
    Points
    52
    Par défaut
    je souhaiterais obtenir le texte qui est placé dans la cellule de la 2eme collone et de la ieme ligne afin de compléter mon adresse pour fichxl
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fichxl = Dir("C:\...\" & Range("2,i").Select & "\" & Range("7,i").Select & "\" & Range("7,i").Select & ".XLS")

  16. #16
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    AlainTech t'a posé une question qui aurait dû "t'interpeler"
    Si i est une variable et il me "semble" que c'est le cas, ce n'est pas [Range("2,i")] mais range("B" & i)
    Ensuite ce n'est pas Select pour avoir le contenu de la cellule mais .value
    Bonne après-midi

  17. #17
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    86
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Avril 2007
    Messages : 86
    Points : 52
    Points
    52
    Par défaut
    Désoler mais je n'avais jamais fais de programation de ma vie avant la semaine dernière je ne connais pas toutes les synthaxe merci encore

  18. #18
    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
    En fait, tu y étais presque...

    A la place de Range, utilise Cells.
    Dans ce cas, tu peux écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(i, 2) ' Les paramètres de Cells sont d'abord la ligne, puis la colonne

  19. #19
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    86
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Avril 2007
    Messages : 86
    Points : 52
    Points
    52
    Par défaut
    Merci beaucouppour votre aide cela fonctionne

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Récupérer données de fichiers au nom générique
    Par bestkiki dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 11/05/2008, 19h47
  2. VBA - Lire & Récupérer données XML > Excel
    Par House MD dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 31/12/2007, 10h37
  3. [VBA-E]Ouverture d'autres fichiers
    Par anisr dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 27/01/2007, 08h42
  4. [VBA-E] récupérer nom utilisateur fichier en lecture seule
    Par cwain dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 23/01/2007, 15h46
  5. [VBA-E]Récupérer chemin du fichier de données d'un graphique
    Par pimouss76 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 31/03/2006, 14h41

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