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 - Saut ligne + Remplissage auto sous conditions


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Naturopathe
    Inscrit en
    Juillet 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Naturopathe
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2018
    Messages : 4
    Par défaut Macro - Saut ligne + Remplissage auto sous conditions
    Bonjour à toues et à tous,

    Je me permets de vous écrire pour vous demander de l'aide concernant le projet sur lequel je bosse actuellement.

    Etant débutant en VBA j'ai commencé à coder une partie par mes propos moyens et je dois avouer que pour cette première étape, mon code fonctionne parfaitement.
    Cependant, je reste totalement bloqué sur la "deuxième" partie de mon code, j'ai beau avoir écumé tout internet, je ne trouve pas la solution à mon problème !
    Je fais donc appel à vous dans l'espoir que vous puissiez me débloquer!


    Pour ce faire, voici la construction de mon fichier (qui est relativement simple):
    - Un onglet "DATA" ou seront les informations (faisons comme si cette feuille n'existe pas)
    - Un onglet "MacroDATA" ou seront remises certaines informations de la feuille "DATA"
    - Un onglet "Synthèse" qui sera la feuille "d'accueil" après retraitement des informations à l'aide de la macro
    - Un onglet "Limites" contenant les limites des montants

    Intéressons-nous à l'onglet "MacroDATA" là ou sera effectuée la Macro:
    J'ai en colonne A : "Numéro Deal" avec le numéro de mon deal (qui sera mit à la main)
    J'ai en colonne B: "Commentaire" une colonne qui peut être remplie ou non, dans laquelle je veux pouvoir mettre un commentaire (qui sera mit à la main)
    J'ai en colonne C: "Devise" le code de la devise dans laquelle mon échange va avoir lieu (qui sera issu de l'onglet "DATA")
    J'ai en colonne D,E,F,G: des colonnes dans lesquelles les informations peuvent être aussi bien des chiffres que des caractères (qui seront mises à la main)
    J'ai en colonne H: "Montant" le montant de mon échange

    De la colonne A à la colonne H, les colonnes ne devront pas changer ni même de nom/de place, le but est de copier les valeurs des colonnes A à H vers l'onglet "Synthèse". Le reste sert donc de "paramètre":

    J'ai en colonne I: "Montant Voulu" il s'agit du montant total de la transaction
    J'ai en colonne J: True/Wrong, ici il s'agit d'une fonction SI avec une recherche V qui est appliquée et qui me dit si le "Montant Voulu" > ou non à ma limite selon la devise. Si TRUE apparait cela veut dire que mon montant total est inférieur à ma limite. Si WRONG, alors mon montant total est supérieur à ma limite.
    J'ai en colonne K: "Limite" qui est une recherche V de l'onglet "Limites" selon le code devise en colonne C
    J'ai en colonne L: "Chaque", ici une fonction SI est appliquée: Si dans la colonne J "Wrong" apparait, alors on divise "Montant Voulu" par la limite et ce, arrondi au supérieur

    Mon objectif est simple: Je voudrai qu'à l'aide d'une macro VBA les informations de "MacroDATA" soient collées dans l'onglet "Synthèse". MAIS, j'ai plusieurs conditions à respecter:
    -1: Si "Chaque" est > 0, alors sauter le nombre de ligne nécessaire. Par exemple si en L2 la valeur est 6, ma macro va sauter 6 lignes (C'est cette partie de la macro que j'ai codé seul et qui marche)
    -2: J'aimerai maintenant que la macro remplisse les lignes vides pour que le montant ne dépasse jamais la limite
    -3: J'aimerai coller uniquement les cellules A2 à H500 si dans la colonne J si il y a "TRUE", autrement dit uniquement si mon "Montant" est inférieur ou égale à ma limite



    J'espère avoir été clair dans l'explication de mon fichier et de ma demande.
    J'espère par la suite pouvoir rajouter moi même deux ou trois critères dans ce fichier

    Merci d'avance pour le temps que vous consacrerez à m'aider!


    Fabio

    PS: Je joins un simple screenshot de mon fichier après toutes ces informations

    Pièce jointe 399355

  2. #2
    Membre averti
    Femme Profil pro
    Data Analyst
    Inscrit en
    Mai 2016
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Data Analyst
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2016
    Messages : 13
    Par défaut
    Bonjour Fabio,

    Peux-tu joindre un exemple de fichier ? En complétant manuellement un exemple des points 2 et 3.

    Merci

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Naturopathe
    Inscrit en
    Juillet 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Naturopathe
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2018
    Messages : 4
    Par défaut
    Bonjour sarah67,

    Je te joins un screen pour donner plus de détail:

    1- Après premiere execution de la macro
    Pièce jointe 399582

    2- ce que je cherche à faire, remplir les informations lorsque "wrong" est affiché.
    Pièce jointe 399590

    Par ailleurs, petite difficulté supplémentaire que j'avais omis : lorsque le montant dépasse légèrement la limite (idéalement moins de la moitié) serait-il possible de diviser le montant voulu par 2 ? Comme c'est le cas pour les lignes 19&20, 29&30, 35&36 et 39&40

    3 - Le copier/coller en valeur qui doit s'effectuer dans un autre onglet ("Synthèse")
    Pièce jointe 399594

    Merci à tous,

    Fabio

  4. #4
    Membre averti
    Femme Profil pro
    Data Analyst
    Inscrit en
    Mai 2016
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Data Analyst
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2016
    Messages : 13
    Par défaut
    Bonjour Fabio56,

    Je pense avoir compris ceux que tu veux faire, j'ai repris la même structure que ton fichier tu trouveras le code ci après :

    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
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
     
          Sub test_copy()
     
    Dim vlrn As Long
    Dim vlrn1 As Long
    Dim amount As String
    Dim chaque_formule As String
    Dim chaque As Integer
    Dim chaque1 As Integer
    Dim Cpt_Lignes As Integer
     
     
        With Worksheets("Macrodata")
     
     
           'Boucle
            vlrn = 2
            Do While .Range("C" & vlrn).Value <> ""
     
                'formule pour la colonne chaque
                chaque_formule = "=IF(AND(I" & vlrn & ">=K" & vlrn & ",I" & vlrn & "<>""""),IF(I" & vlrn & "/K" & vlrn & "<1.5,2,int(I" & vlrn & "/K" & vlrn & ")),0)"
                .Range("L" & vlrn).Formula = chaque_formule
     
                     chaque = Cells(vlrn, 12).Value
                'condition sur la colonne J="WRONG"
                If Cells(vlrn, 10).Value = "WRONG" Then
     
                     chaque1 = chaque + vlrn
                     vlrn1 = vlrn + 1
     
                     'copie la partie fixe
                    .Range("C" & vlrn & ":G" & vlrn).Copy .Range("C" & vlrn1 & ":G" & chaque1)
                    .Range("K" & vlrn & ":K" & vlrn).Copy .Range("K" & vlrn1 & ":K" & chaque1)
     
                    'complète le montant et "TRUE"
                    amount = "=I$" & vlrn & "/L$" & vlrn & ""
                   .Range("H" & vlrn1 & ":H" & chaque1) = amount
                   .Range("J" & vlrn1 & ":J" & chaque1) = "TRUE"
     
                End If
                'pour sauter les lignes copiées
                vlrn = vlrn + chaque + 1
            Loop
     
     
            '==============copier sur la feuille SYNTHESE=====================
     
            'compteur du nombre de lignes sur la feuille "Macrodata"
            Cpt_Lignes = 1
                        Do While .Range("C" & Cpt_Lignes).Value <> ""
                                Cpt_Lignes = Cpt_Lignes + 1
                        Loop
                        Cpt_Lignes = Cpt_Lignes - 1
     
            'copie des données sur la feuille SYNTHESE
            .Range("A1:J" & Cpt_Lignes).Copy
            Worksheets("Synthèse").Range("A1").PasteSpecial xlPasteValues
     
            'supprime les lignes = "WRONG"
                        vlrn = 2
                        Do While Worksheets("Synthèse").Range("C" & vlrn).Value <> ""
     
                            If Worksheets("Synthèse").Cells(vlrn, 10).Value = "WRONG" Then
                                Worksheets("Synthèse").Cells(vlrn, 10).EntireRow.Delete
                            End If
                        vlrn = vlrn + 1
                        Loop
     
     
        End With
    End Sub
    La formule pour le chaque divise par 2 si le "montant voulu" est 1,5 fois supérieur à la limite.
    J'ai mis des commentaires au niveau du code, si tu as une question n'hésites pas.

Discussions similaires

  1. [XL-2010] Macro insertion de ligne et somme sous condition
    Par bibZz dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 31/03/2015, 19h26
  2. [XL-2000] MACRO : copie de plusieurs feuilles sous conditions
    Par Killie dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 09/02/2012, 22h52
  3. [XL-2007] Macro de recherche et comptage sous condition
    Par Steph843 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 18/12/2011, 21h19
  4. filtré des lignes aléatoirement mais sous condition
    Par afssaLERH dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 21/11/2008, 15h10
  5. remplissage tableau sous condition
    Par gauguin dans le forum C
    Réponses: 6
    Dernier message: 15/02/2007, 17h06

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