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 :

macro de mise à jour avec variables


Sujet :

Macros et VBA Excel

  1. #1
    Invité1
    Invité(e)
    Par défaut macro de mise à jour avec variables
    Bonjour,

    J'aimerais créer une macro pour mettre à jour les onglets d'un classeur excel. Je suis totalement novice, mais j'ai commencé par lire des tutoriels. On m'a également apporté de l'aide sur d'autres forums mais qui se revele insuffisante pour l'instant et pour mon cas.

    Pour resumer ce fameux cas:

    Dans mon "d:\", j'ai
    - Fichier "analysis.xls" (1 feuil "synthesis", 1 feuil "pays1", 1 feuil "pays2")
    - Fichier "sourcepays1" (1 feuil)
    - Fichier "sourcepays2" (1 feuil)
    Ces 2 derniers fichiers ont 1 structure identique, seules les valeurs changent.

    Tous les mois, je recupère ces fichiers source. Le but est donc de faire une macro pour ne pas faire un copier coller manuel des valeurs (parce qu'en réalité j'ai pas que 2 pays ). En gros, je souhaite que ça se passe ainsi,:

    dans feuil "synthesis" avec un bouton "MAJ"
    - Trouve moi les fichiers "SourcePays*.xls" dans le dossier
    - Ouvre le premier. Controle moi la concordance des mois (valeur) entre le mois choisi en feuil "synthesis" et le mois marqué sur "SourcePays*.xls".
    - Si identiques,
    - appelle moi la macro definie pour la feuil "pays*" (et qui execute un copier/coller des plages de valeurs spécifées selon le pays)
    - Sinon
    - msg d'erreur pour ce pays et passe au suivant
    - Recommence avec le suivant.[/quote]

    Voila du code dont je ne suis, mais alors, vraiment pas sur!
    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
    Option Explicit
     
    Private Sub ButtonMAJ_Click()
     
        Dim wb_target As Workbook
        Dim chemin, mois_target, wb_sourcex, mois_sourcex As String
     
        'trouve moi les fichiers "SourcePays*.xls"
        Set chemin = ChDir(ActiveWorkbook.Path)
        Set wb_sourcex = (chemin & "\" & "SourcePays*.xls")
        Set wb_target = Workbooks("Analysis.xls")
        Set mois_target = Workbooks("Analysis.xls").sheets(1).Range("H1")
     
        Select Case MsgBox("Etes-vous sûr de vouloir charger les données de" & " " & mois_target & "?", vbYesNo)
        Case vbYes
     
    For Each wb_sourcex In .. 'repertoire avec tous les fichiers sourcepaysx.xls
     
        Workbooks.Open (wb_sourcex)
        If mois_target.Value <> wb_sourcex.Range("B8").Value Then
             MsgBox "Le mois choisi ne correspond pas avec les données du rapport !", vbExclamation
             Workbooks("SourcePays*.xls").Close
        Else
     
        'Call MiseAJour* (nom de la macro; MiseAJour1 si sourcepays1)
     
        End If
     
        Next wb_sourcex
     
        wb_sourcex.Close
     
        MsgBox "Vos données ont bien été mises à jour pour " & mois_target
     
        Case vbNo
     
        End Select
     
        End Sub
    Bon c'est du très sommaire parce que je n'y connais rien, je bloque surtout sur la boucle et le call de la macro en fonction du pays "étudié".

    Toute aide est grandement bienvenue!

    Bonne soirée

  2. #2
    Invité1
    Invité(e)
    Par défaut
    Bon, en regardant votre FAQ, j'ai trouvé un élément de réponse "comment boucler les fichiers d'un repertoire?" Je l'ai adapté à mon code mais je tombe sur une erreur au niveau du wb_source.close quasiment à la fin ...

    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
    Option Explicit
     
    Private Sub ButtonMAJ_Click()
     
        Dim wb_target As Workbook
        Dim chemin, mois_target, wb_sourcex, mois_sourcex As String
     
        'Définit le répertoire contenant les fichiers
        chemin = ActiveWorkbook.Path
     
        'Boucle sur tous les fichiers xls du répertoire.
        wb_sourcex = Dir(chemin & "SourcePays*.xls")
     
        Set wb_target = Workbooks("Analysis.xls")
        Set mois_target = Workbooks("Analysis.xls").sheets(1).Range("H1")
     
        Select Case MsgBox("Etes-vous sûr de vouloir charger les données de" & " " & mois_target & "?", vbYesNo)
        Case vbYes
     
        Do While Len(wb_sourcex) > 0
            Workbooks("SourcePays*.xls").Open
                If ActiveWorkbook.Range("B8").Value <> mois_target.Value Then
                    MsgBox "Le mois choisi ne correspond pas avec les données du rapport !", vbExclamation
                    Workbooks("SourcePays*.xls").Close
                Else
                    Call Feuil2.MiseAJour1
                End If
     
            wb_sourcex = Dir()
        Loop
     
        wb_sourcex.Close
     
        MsgBox "Vos données ont bien été mises à jour pour " & mois_target
     
        Case vbNo
     
        End Select
     
    End Sub

Discussions similaires

  1. TIBDataSet comment faire de la mise à jour avec jointure
    Par uluru dans le forum Connexion aux bases de données
    Réponses: 8
    Dernier message: 08/07/2006, 11h09
  2. Mise à jour avec les datasetproviders
    Par kafui dans le forum Bases de données
    Réponses: 2
    Dernier message: 23/06/2006, 15h25
  3. Réponses: 3
    Dernier message: 22/12/2005, 18h47
  4. Mise à jour avec jointure
    Par taupain dans le forum Bases de données
    Réponses: 5
    Dernier message: 09/07/2004, 12h27

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