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 :

Ouverture d'un fichier incrémentée [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2012
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 180
    Points : 72
    Points
    72
    Par défaut Ouverture d'un fichier incrémentée
    Bonjour,

    J'effectue une extraction d'un fichier excel à partir d'un navigateur de type Internet Explorer, nommé par exemple : FICHIER.xls

    J'ai créé une macro qui permet de copié le contenu de ce fichier dans un autre fichier nommé RAPPORT.xlsm

    J'ouvre les deux fichiers en même temps afin que la macro présente dans RAPPORT.xlsm reconnaisse FICHIER.xls

    Je rappel les opérations réalisés :
    1- Dans FICHIER.xls : CTRL + A, CTRL + C
    2- Dans RAPPORT.xlsm : CTRL + A, CTRL + V

    Le souci c'est que l'extraction ne peut pas se faire car au bout de la seconde extraction, le fichier nommé FICHIER.xls à changé de nom, il devient FICHIER [1].xls, au bout de la 3ème extraction il devient FICHIER [2].xls etc etc !

    Comment faire pour incrémenter le nom du fichier dans mon code de ma macro ?

    PS: je copierai le code macro demain !

    Merci d'avance.

    Antoine.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonsoir,
    Tu ne peux pas déplacer le fichier dans un autre répertoire en renommant?
    Comme ça le fichier importé ne va pas s'incrémenter.

  3. #3
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2012
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 180
    Points : 72
    Points
    72
    Par défaut
    Justement non, il faut que cela se fasse de manière automatique ! et je n'ai pas d'autre moyen que de passer par du code VBA...

    Je posterai mon bout de code demain, je n'ai pas le code à disposition en ce moment.

    Merci d'avance !

    Antoine.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Je envisageais pas autrement!
    Vb peut également déplacer le fichier.

    De plus si tu déplace le fichier après traitement un dir(*.xls) sufis!

  5. #5
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2012
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 180
    Points : 72
    Points
    72
    Par défaut
    En réalité, le fichier dont j'extrait les données sur internet, je l'ouvre directement: il se trouve dans un répertoire temporaire, et j'aimerai récupérer son contenu (la dernière version) sans avoir à le déplacer.

    Une fois le code collé ici même, cela sera plus simple à comprendre à mon avis.

    merci !

    Antoine.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Comme tu veux, mais dans ce cas il va falloir sauvegarder l'index dans une cellule Excel!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    seets("feuill2").range("a1")=sheets("feuille2").range("a1") + 1

  7. #7
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    Bonsoir,

    si lorsque tu lance procédure tes 2 fichiers sont ouvert tu peu parcourir la collection de classeurs ouvert :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    dim wk as workbook 
    for each wk in workbooks 
     
     ....
    Next
    et choisir sur quel fichier agir .. ,

  8. #8
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut

    Bonjour.

    Citation Envoyé par Ghost0000 Voir le message
    En réalité, le fichier dont j'extrait les données sur internet, je l'ouvre directement: il se trouve dans un répertoire temporaire
    C'est un fichier Excel, texte ?
    S'il est compatible Excel, il pourrait être directement intégré dans un classeur et peut-être, sans même une ligne de code
    via la fonction de feuille de calculs du menu Données, Requête à partir du Web (une QueryTable en VBA) …

    Si le fichier compatible Excel n'est pas récupérable via cette fonction, il est tout de même possible de charger
    ses données comme par exemple dans cette contribution

    __________________________________________________________________________________________________
    Tous unis, tous Charlie
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  9. #9
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2012
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 180
    Points : 72
    Points
    72
    Par défaut
    Voilà le code :
    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
    Sub Coller()
    '
    ' Coller Macro
    '
     
    ' On supprime ce qu’il y a dans RAPPORT.xls :
        Cells.Select
        Selection.ClearContents
    ' On va chercher le tableau ouvert via Internet Explorer :
        Windows( _
            "Tableaux_-_FICHIER_REF1.xls"). _
        Activate
    ‘ On sélectionne toute la page et on la copie (on est sur le tableau FICHIER_REF1) :
        Cells.Select
        Range("N24").Activate
        Selection.Copy
    ‘On sélectionne le RAPPORT.xlsm et on colle ce que l’on à copier depuis FICHIER_REF1 :
    Windows("RAPPORT.xlsm"). _
            Activate
        Range("A1").Select
        ActiveSheet.Paste
        Range("A1").Select
    End Sub
    EN réalité, je génère un fichier Excel et je l'ouvre directement depuis Internet explorer.

    Mon problème c'est que mon fichier Tableaux_-_FICHIER_REF1.xls, peut s'incrémenter après plusieurs extraction, il devient Tableaux_-_FICHIER_REF1[1].xls puis Tableaux_-_FICHIER_REF1[2].xls etc etc....

    Il faudrait incrémentée le nom du fichier dans VBA... enfin si c'est possible..

    Merci de votre aide !

    Antoine

  10. #10
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    dans le poste #6, je t'ais explique qu'il était possible d’incrémenter mais qu'il fallait sauvegarder le N° incrémental dans une cellule
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub test()
    Dim wb As Workbook
    If Dir("Tableaux_-_FICHIER_REF1[" & Sheets("feuille2").Range("a1") & "].xls") = "" Then Exit Sub
    Set wb = Workbooks.Open("Tableaux_-_FICHIER_REF1[" & Sheets("feuille2").Range("a1") & "].xls")
    Sheets("feuille2").Range("a1") = Sheets("feuille2").Range("a1") + 1
    End Sub

  11. #11
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2012
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 180
    Points : 72
    Points
    72
    Par défaut
    Merci pour cette réponse rapide !
    Je viens de tester ton code mais il reste des soucis a règle:
    - si le fichier Tableaux_-_FICHIER_REF1.xls est extrait la première fois, il n a pas d incrementation donc le code s arrête

    Merci tu m as déjà fais faire un grand pas en avant !!!

  12. #12
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub test()
    Dim wb As Workbook
    dim Fichier as string
    if  trim ("" Sheets("feuille2").Range("a1"))="" then Fichier =  "Tableaux_-_FICHIER_REF1.xls" else Fichier  = "Tableaux_-_FICHIER_REF1[" & Sheets("feuille2").Range("a1") & "].xls"
    If Dir(Fichier  ) = "" Then Exit Sub
    Set wb = Workbooks.Open(Fichier )
    Sheets("feuille2").Range("a1") = Sheets("feuille2").Range("a1") + 1
    End Sub

  13. #13
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    Bonjour,

    je pense que tu n'as rien à incrémenter ce n'est pas toi qui maîtrise la façon dont est nommé ton fichier l'incrémentation doit s'effectuer en fonction de tes téléchargement précédent et repart à "0" à chaques nettoyages de ton répertoire temporarie... donc cela ne sert à rien d'incrémenter ton nom de fichier ..

    répond à la question :

    - comment lance tu ta macro et combien de fichiers excel sont ouvert lorsque tu lance ta macro

  14. #14
    Invité
    Invité(e)
    Par défaut
    d'accord avec toi bbil,
    c'est pour cela que je proposais de déplacer le fichier dans un répertoire d'archive.

  15. #15
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2012
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 180
    Points : 72
    Points
    72
    Par défaut
    Je souhaite ouvrir un fichier qui s incrémente, j explique toutes mes démarches :
    1 j effectue une extraction web, le navigateur internet me demande d ouvrir ou enregistrer le fichier tableau. Je choisi de l ouvrir!
    2 je réduis puis j ouvre mon fichier excel nomme rapport contenant la macro !
    A cette étape j ai 2 fichiers exels d ouverts !!
    3 en cliquant sur un bouton mise a jour, cela déclenche ma macro qui copie le contenu de la feuille tableau en direction d une feuille nomme base brute sur mon fichier rapport.

    A chaque extraction mon fichier tableau s incrémente et la macro ne reconnait plus tableau.

    Voilà j aurais toujours maximum 2 fichiers d ouverts !

  16. #16
    Invité
    Invité(e)
    Par défaut
    Nous avons bien compris tous ça, mais nous te formulons des interrogations aux quels tu ne réponds pas!

  17. #17
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    Ok .. tu as donc que 2 fichiers ouvert au moment du lancement de ta macros....

    Tu as donc l'objet thisworkbook pour acceder au classeur contenant ta macro.. et pour l'autre tu parcours la collectio workbooks et tu utilise le classeur dont le nom est diffèrent de Thisworkbook.name...

  18. #18
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2012
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 180
    Points : 72
    Points
    72
    Par défaut
    Le souci ce n'est pas vraiment le copié coller d'une page d'excel à l'autre, mon principal souci c'est le fait d'ouvrir un fichier dont le nom change à chaque extraction !

    Je ne vois pas comment faire pour adapté mon code à ce genre d'opération, après d'après vos messages, j'ai vu qu'il étais possible de déplacé le fichier mais je ne vois pas comment faire avec le code ....

  19. #19
    Invité
    Invité(e)
    Par défaut
    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
    Sub test()
    Dim wb As Workbook
    Dim rep as string
    Dim fichier as string
    Rep="c:\......\" '  Chemin du répertoire
    Fichier = Dir(rep & "Tableaux_-_FICHIER_REF1*.xls")
    While fichier <>""
    Set wb = Workbooks.Open(rep & fichier)
    ' traitement...
    Wb.saveas repsave & fichier
    Wb.close
    Kill rep &fichier
    Fichier = Dir(rep & "Tableaux_-_FICHIER_REF1*.xls")
    Wend
    End sub
    Dernière modification par Invité ; 20/02/2015 à 22h32.

  20. #20
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    Bonsoir,

    Tiens voilà le nom du fichier source est un paramètre inutile ... :
    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
    Option Explicit
     
    Sub Coller()
    '
    ' Coller Macro
    '
     
    ' On supprime ce qu’il y a dans RAPPORT.xls : ==> Classeur macro donc THISWORKBOOK !!
        ThisWorkbook.Sheets(1).Cells.ClearContents
    'ON verifie que seulement 2 fichier soit ouvert
    If Workbooks.Count <> 2 Then
      MsgBox "Seulement 2 fichiers doivent être ouvert.."
    Exit Sub
    End If
    Dim wk As Workbook
    'On recherche le classeur source
    For Each wk In Workbooks
      If StrComp(wk.Name, ThisWorkbook.Name, vbTextCompare) <> 0 Then 'Si le nom est différent on sort
        'Fichier trouvé
        Exit For
      End If
    Next
    'pas besoin d'activate ou select inutile
     wk.Sheets(1).Range("N24").Copy ThisWorkbook.Sheets(1).Range("A1")
    End Sub

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Ouverture d'un fichier excel predefini
    Par nberthonneau dans le forum Access
    Réponses: 10
    Dernier message: 13/06/2007, 23h14
  2. [Système] ouverture d'un fichier pdf
    Par joneil dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 17/05/2005, 11h36
  3. Réponses: 2
    Dernier message: 06/04/2005, 13h01
  4. Réponses: 5
    Dernier message: 27/07/2004, 18h04
  5. Réponses: 2
    Dernier message: 22/07/2002, 13h13

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