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 :

Avis sur une Macro


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2013
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 18
    Par défaut Avis sur une Macro
    Bonjour,

    Je voudrais votre avis sur ma macro.
    Il s'agit d'une macro qui permet d'extraire les données d'une feuille pour les placer dans une autre feuille en effectuant différents traitements.
    La première feuille contient donc des données de clients sous forme de tableau tous séparé par une seule ligne.

    Et je voudrais connaître un moyen de pouvoir réinitialiser mes variables pour chaque nouveau tableau client.

    Voilà merci!

    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
    Sub ExtractionClients()
    '
    Dim c As Integer
    derniereligne = Sheets("Feuil1").Range("A" & Rows.Count).End(xlUp).Row
    Sheets("Feuil1").Select
     
    For i = 1 To derniereligne Step 1
    'formule permettant d'extraire le nom des clients dans la feuille 2
        If Cells(i, 1).Value Like "Compt*" And Cells(i, 2).Value = 0 Then
        nomclient = Cells(i, 1).Value
        Sheets("Feuil2").Select
        Rows(4).Insert
        Cells(4, 1).Select
        ActiveCell.Value = nomclient
        'compter les cellules du tableau en partant de la cellule i à la cellule vide -3 (fin du tableau)
            Sheets("feuil1").Select
            c = 1
            Do While Not IsEmpty(Cells(i + c, 1))
            c = c + 1
            Loop
            c = c - 3
     
            Sheets("Feuil1").Select
                'Pour chaque cellule effectuer les opérations d'enregistrement en fonction de certaines conditions
                For y = 1 To c Step 1
                Cells(i + y, 1).Select
                If ActiveCell.Offset(0, 1) = "" Then
                report = ActiveCell.Offset(0, 4).Value - ActiveCell.Offset(0, 5).Value
                'MsgBox (report)
                ElseIf ActiveCell.Offset(0, 1) = "SG" Then
                paiement = ActiveCell.Offset(0, 4).Value - ActiveCell.Offset(0, 5).Value
                'MsgBox (paiement)
                ElseIf ActiveCell.Offset(0, 1) = "SMC" Then
                paiement = ActiveCell.Offset(0, 4).Value - ActiveCell.Offset(0, 5).Value
                'MsgBox (paiement)
                Else:
                vte = vte + ActiveCell.Offset(0, 4).Value - ActiveCell.Offset(0, 5).Value
                'MsgBox (vte)
                'echevte = ActiveCell.Offset(0, 6).Value
                'MsgBox (echevte)
                End If
                Next y
     
                Sheets("Feuil2").Select
                Cells(4, 1).Select
                ActiveCell.Offset(0, 5).Value = vte
                ActiveCell.Offset(0, 6).Value = report
                ActiveCell.Offset(0, 7).Value = paiement
     
     
        Sheets("Feuil1").Select
        End If
     
    Next i
    End Sub

  2. #2
    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 MaxM59 Voir le message
    Je voudrais votre avis sur ma macro.
    Les deux trucs qui me sautent aux yeux, c'est que tu devrais déclarer toutes tes variables (avec leur type) et que quasiment tous tes Select devraient être supprimés (ce qui te permettrait aussi de supprimer la plupart des Offset).

    Et je voudrais connaître un moyen de pouvoir réinitialiser mes variables pour chaque nouveau tableau client.
    Il faudrait d'abord que tu expliques comment tu vas enchaîner tes tableaux clients.
    Si tu comptes relancer l'exécution de la macro pour chaque tableau, la réinitialisation se fera d'elle-même.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2013
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 18
    Par défaut
    Je n'ai pas l'habitude de déclarer mes variables mais en effet il faut que je le fasse.

    Je voudrais juste que la macro s'exécute une fois. Et le problème ici, c'est que les variables contiennent les valeurs des autres tableaux.
    Il y a t il une solution à cela?

    Et globalement, comment pensez vous de la logique globale de la marcro?

    PlanTrésorerie Type.xlsx

    Voilà une partie des tableaux en question pour ceux qui ont le courage d'aller voir.

    Pour l’enchaînement des tableaux clients, chaque tableau commence par "compte", donc grâce à cela je commence l’exécution du code sur le tableau avec les enregistrements des variables et les extractions.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mai 2013
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 18
    Par défaut
    Je crois que j'ai trouvé... Comme quoi dormir ca remet les idées en place...

    J'ai tout simplement réinitialisé les variables comme ceci:
    vte = 0
    report = 0
    paiement = 0

    Et j'obtiens le résultat voulu.

    Sinon, plus généralement que pensez vous du code?

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

Discussions similaires

  1. Votre avis sur une proposition de job
    Par plex dans le forum Emploi
    Réponses: 7
    Dernier message: 18/01/2007, 11h11
  2. Votre avis sur une proposition de CDI!
    Par wapit dans le forum Emploi
    Réponses: 13
    Dernier message: 22/07/2005, 14h41
  3. [Programmation distribuée] Votre avis sur une archi
    Par Acarp47 dans le forum Plateformes (Java EE, Jakarta EE, Spring) et Serveurs
    Réponses: 7
    Dernier message: 29/06/2005, 15h01
  4. Votre avis sur une bannière animée developpez.com
    Par Marc Lussac dans le forum Evolutions du club
    Réponses: 14
    Dernier message: 02/02/2005, 08h52

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