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 :

Aide au développement d'une macro


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Janvier 2008
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 105
    Par défaut Aide au développement d'une macro
    Bonjour,
    Cela fait plusieurs jours que j'essaye de développer une macro sur excel alors que je ne connais pas le langage VBA, j'arrive à le comprendre mais je n'arrive pas a l'écrire, donc je me suis dit qu'il était temps de demander de l'aide.

    Je vous expose mon problème (c'est un peu long je vous préviens)

    J'ai un classeur que l'on va nommer "classeur A" dans lequel j'ai 80 feuilles (voir plus car j'en ai qui se rajoute très souvent), elles ont toutes la même forme (les infos se trouvent au même endroit), elles représentent le descriptif de mes commandes.

    J'ai un second classeur que l'on va nommer "classeur B" qui me permet de suivre mes dépenses (prévu => les commandes, et non prévu => note de frais...)

    Je souhaite que mon classeur B reprenne automatiquement le montant de mes commandes dans le classeur A, mais je veux que le tout soit classé par mois. Car j'ai des avenants aux commandes, donc il faut que le montant de mon avenant soit comptabilisé dans le bon mois (dans le classeur B). Je ne sais pas si c'est très clair.

    Si j'ai bien pensé la chose, la variable de ma macro sera le mois. Elle doit donc aller chercher dans le classeur A, dans la feuille nommé "001" ,dans les cellules A11:A18 le mois si elle trouve le mois de Juin 06 elle le comptabilise dans mon classeur B dans la colonne du mois de Juin 06, si elle ne trouve pas elle passe à la feuille nommé "002". Si en feuille "002" elle trouve Juin 06 elle l'additionne à la première valeur. et ainsi de suite jusqu'a la dernière feuille et jusqu'à Mars 08.

    Pour info mon classeur A est construit comme suit:
    De A11 à A18 je rentre la date de ma commande ou de mon avenant (chaque feuille représente une commande)
    De D11 à D18 j'ai le montant de ma commande ou de mon avenant.

    Merci par avance de votre aide.

  2. #2
    Membre confirmé
    Inscrit en
    Janvier 2008
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 105
    Par défaut
    je pense qu'il faut peut être faire une variable avec if, du style:

    Si dans mon classeur A, dans mes 80 feuilles, de A11 à A18 j'ai la valeur juin-06 qui apparait alors je récupére le montant dans la colonne D (à la ligne correspondante) et il se colle dans mon classeur B. Si je trouve plusieurs fois la valeur souhaité (dans les différentes feuilles) elle s'additionne et ainsi de suite pour toutes mes feuilles.

    Si la variable fonctionne pour juin-06, je n'aurais qu'à la recopier et changer le mois de ma variable.

    Qu'en pensez-vous? Je fais peut-être fausse route.

    Merci encore de votre aide, c'est très important pour moi.

  3. #3
    Membre chevronné
    Avatar de Bigalo
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    445
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 445
    Par défaut
    Bonjour,

    L’ïdée est d’imbriquer 2 boucles, l’une à travers les feuilles du classeur A, l’autre dans les 8 cellules A11 à A18 et de tester les dates.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub Report()
        ReportMensuel 6
    End Sub
     
    Sub ReportMensuel(NumMois As Integer)
    Dim f As Worksheet, c As Range
            For Each f In Workbooks("Classeur A")
                    For Each c In f.Range("A11:A18")
                            If Month(c) = NumMois Then
     
                            End If
                    Next c
            Next f
    End Sub
    Voici le point de départ.

    Attention aux additions : si on lance 2 fois la macro, il ne faut pas prendre 2 fois en compte les données. Il faudrait donc inscrire en colonne E que le montant a déjà été reporté, et tester cela.

    Bon courage.

  4. #4
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Par défaut
    Bonjour à tous,
    Attention aux additions : si on lance 2 fois la macro, il ne faut pas prendre 2 fois en compte les données. Il faudrait donc inscrire en colonne E que le montant a déjà été reporté, et tester cela.
    Ou remettre la variable destination à zéro

  5. #5
    Membre confirmé
    Inscrit en
    Janvier 2008
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 105
    Par défaut
    Citation Envoyé par LeForestier Voir le message
    Bonjour à tous,

    Ou remettre la variable destination à zéro

    Comment on fait ça??

    Si quelqu'un à une idée pour le reste de ma macro je suis très preneuse

  6. #6
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 128
    Par défaut
    SAlut et bienvenu

    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
    Sub Report()
        ReportMensuel 6
    End Sub
     
    Sub ReportMensuel(NumMois As Integer)
    Dim f As Worksheet, g As Worksheet, c As Range
    Set g = Workbooks("Classeur B")
    g.Range("Cellule d'arrivée").Clear
        For Each f In Workbooks("Classeur A")
            If f.Name = "RECAP" Or f.Name = "MODELE" Then GoTo Suivant
            For Each c In f.Range("A11:A18")
                If Month(c) = NumMois Then
                    g.Range("A" & c.Row) = CInt(g.Range("Cellule d'arrivée")) + CInt(f.Range("D" & c.Row))
                End If
            Next c
    Suivant:
        Next f
    End Sub
    J'en met un petit bout en plus, faute d'avoir un tableau sur lequel travailler, j'ai mis des cellule au piff et je n'ais pas testé le code.
    A++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  7. #7
    Membre confirmé
    Inscrit en
    Janvier 2008
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 105
    Par défaut
    Citation Envoyé par Bigalo Voir le message
    Attention aux additions : si on lance 2 fois la macro, il ne faut pas prendre 2 fois en compte les données. Il faudrait donc inscrire en colonne E que le montant a déjà été reporté, et tester cela.
    Merci pour le début de la macro. Je ne peux rien inscrire dans la colonne E car j'ai déjà des infos. Par contre je ne comprends pas, si je lance 2 fois ma macro, elle ne va pas recalculer du début mais l'additionner au reste ??

    J'ai oublier de préciser, il y a 2 feuilles qui ne doivent pas être prise en compte dans mon classeur A pour la macro, la prémière s'appelle RECAP et la seconde MODELE; C'est surtout RECAP qui ne doit pas être prise en compte, car elle récupére des infos de mes 80 autres feuilles.
    Je pense que je dois le préciser dans la macro.

    Pour écrire le mois dans ma macro comment dois-je faire? Est ce que je reprend la même syntaxe que dans mon tableau, ou si je lui mets Juin-6 (car je n'arrive pas à écrire Juin-06) il va comprendre?

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

Discussions similaires

  1. Développement d'une macro pour application sous IE
    Par stb59 dans le forum Microsoft Office
    Réponses: 1
    Dernier message: 25/01/2015, 21h15
  2. [XL-2010] Besoin d'aide à la création d'une macro dans XL-2010
    Par florian1106 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 24/12/2012, 13h18
  3. [XL-2000] Aide pour création d'une macro complexe
    Par dybmans dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 26/10/2010, 12h38
  4. [XL-2007] Aide à la création d'une macro
    Par Vishnou dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 06/10/2010, 15h15

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