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 :

Ouvrir mon fichier source une seul fois


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2017
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2017
    Messages : 36
    Par défaut Ouvrir mon fichier source une seul fois
    Bonjour, j'ai besoin de votre aide s'il vous plait
    J'ai fais une macro qui cherche des valeurs d'un autre classeur qui constitue ma base de donnée, don j'ai utilisé une syntaxe qui ouvre qui permet d'ouvrir une fenêtre pour sélectionner le path ( l'endroit de mon fichier excel qui contitue ma BDD).
    le problème je veux qu'une fois mon fichier source est ouvert lamacro ne me demande pas de sélectionner mon path
    voici mon 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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    Private Sub CommandButton1_Click()
    Dim Fsource As Excel.Workbook
    Dim ws As Worksheet
    Dim w As Worksheet
    Dim Ref As Long
    Dim chemin As String
    Dim nb_lig As Integer
    Dim Qty As Integer
    Dim trouv As Boolean
    Dim s As Integer
    'For Each Fsource In Application.Workbooks
     
     While ouvert <> True
     
       chemin = Application.GetOpenFilename          'ouvrir une une fenetre qui permet de selectionner le fichier excel
     
     
    Set Fsource = Workbooks.Open(Filename:=chemin)       'ouvrir le fichier excel qui contient la BDD
     
    Set ws = Fsource.Worksheets("BDD")
    ouvert = True
     
    Wend
    Set w = Workbooks("destination.xlsm").Worksheets("Feuil2")
    nb_lig = ws.Range("A" & Rows.Count).End(xlUp).Row                     'compter le nombre des lignes
    j = w.Range("A" & Rows.Count).End(xlUp).Row + 1                       'Trouver la cellule active
    Ref = Me.TextBox2
    Qty = Me.TextBox1
     
     
     
    With ws
     
    For i = 4 To nb_lig
    If Ref = .Cells(i, 3).Value Then       'Si le reference = à la valeur de la troisième colonne dans la feuille des données on remplie le tableau
    trouv = True
    w.Cells(j, 1) = j - 4
    w.Cells(j, 3) = Ref
    w.Cells(j, 5) = Qty
    w.Cells(j, 2) = .Cells(i, 1)
    w.Cells(j, 6) = .Cells(i, 4)
    w.Cells(j, 7) = .Cells(i, 5)
    w.Cells(j, 8) = .Cells(i, 6)
    w.Cells(j, 9) = .Cells(i, 7)
    w.Cells(j, 10) = .Cells(i, 8)
    w.Cells(j, 11) = .Cells(i, 9)
    w.Cells(j, 12) = .Cells(i, 10)
    w.Cells(j, 13) = .Cells(i, 11)
     
     
    End If
    Next i
    End With
    If trouv = False Then
        MsgBox ("verifiez votre saisie")
    End If
     
    Unload Me
    End Sub
    Merci pour votre aide

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    Pourquoi une boucle là ou suffit une simple expression conditionnelle (if not ouvert then)
    A ce propos :
    - où et comment as-tu déclaré la variable ouvert ?
    - où et comment la passes-tu à True ?

    Entre autres car tu pourrais également :
    verfier si le classeur source est ou non dans la collection Workbooks
    ou encore : déclarer fsource en variable publique et vérifier ni not nothing
    les solutions ne manquent vraiment pas ...

  3. #3
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par unparia Voir le message
    Pourquoi une boucle là ou suffit une simple expression conditionnelle (if not ouvert then)
    Expression à placer après le GetOpenFilename qui se contente de tester la variable "chemin" (la variable "ouvert" est inutile).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Chemin = "" Then Exit Sub
    Pour bien faire, il faudrait aussi vérifier qu'il y a bien une feuille "BDD" est bien dans le fichier sélectionné et prévenir l'utilisateur si ce n'est pas le cas.
    Dans cette configuration, une boucle pourrait être utile pour permettre à l'utilisateur de sélectionner éventuellement un autre fichier.

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2017
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2017
    Messages : 36
    Par défaut
    D'accord merci pour votre aide

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Salut.

    Je ne connais pas l'organisation de tes données source, mais je n'ai jamais aimé travailler avec un fichier Excel nécessitant qu'un autre soit ouvert.

    Perso, je préfère rapatrier toutes les données source en copie locale dans le classeur de travail et travailler avec cette copie.

    Ne pourrais-tu pas importer tes données via les outils de l'onglet Données? Ca permettrait de rafraîchir les données source par simple actualisation, et cela ne demande aucune macro.

    Si pour un raison ou une autre, tu ne peux procéder avec les outils natifs d'Excel, tu pourrais alors importer une seule fois les données source dans ton classeur de travail puis travailler en local, quitte à prévoir un rafraîchissement par macro.

    L'idée, en tout cas, est de travailler avec une copie locale plutôt que d'aller dans le fichier source chaque fois que tu en as besoin.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

Discussions similaires

  1. [Utilisation] Peut-on versionner plusieurs fichiers en une seule fois ?
    Par llaffont dans le forum Subversion
    Réponses: 0
    Dernier message: 18/03/2011, 16h33
  2. lire un fichier en une seule fois
    Par ouinih dans le forum Langage
    Réponses: 2
    Dernier message: 25/03/2008, 18h30
  3. [SimpleXML] Ouvrir une seule fois un fichier xml
    Par persia dans le forum Bibliothèques et frameworks
    Réponses: 5
    Dernier message: 04/01/2008, 11h54
  4. Executer mon application qu' une seul fois
    Par touf35 dans le forum C++Builder
    Réponses: 6
    Dernier message: 06/12/2007, 05h37
  5. Ouvrir une application une seule fois - numero de process
    Par lefabdepau dans le forum VB.NET
    Réponses: 1
    Dernier message: 20/02/2007, 13h12

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