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 :

Données en groupement


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Homme Profil pro
    Chef de projet
    Inscrit en
    Avril 2016
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Chef de projet
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2016
    Messages : 90
    Par défaut Données en groupement
    Bonjour,

    J'ai un petit problème que je ne vois pas comment résoudre. Dans un tableau, j'ai par exemple deux lignes avec en colonne T un même nom, exemple VIR4513.

    Sur une de ces lignes, j'ai une somme positive et sur l'autre j'ai une somme négative.

    Je voudrais que dans la colonne W, s'inscrive à l'aide d'un code VBA, pour la ligne positive :
    Virement du compte (valeur de la colonne J + valeur de la colonne E de la ligne négative) pour (valeur de la colonne V)
    et sur la ligne négative :
    Virement vers le compte (valeur de la colonne J + valeur de la colonne E de la ligne positive) pour (valeur de la colonne V)

    Je ne suis pas très loin de la solution, enfin je pense mais je suis bloqué pour le moment.

    J'ai écrit le code suivant :

    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
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
     
    Private Sub CommandButton1_Click()
     
    Dim I As Integer
    Dim DERNLIGNVIR As Long
    Dim MONTANTVAR As String
     
        DERNLIGNVIR = Range("E1048576").End(xlUp).Row
     
        For I = 4 To DERNLIGNVIR
     
            If Range("E" & I) = "" Then
            Rows(I).Delete
            End If
     
            If Range("E" & I) = "Imputation" Then
            Rows(I).Delete
            End If
     
        Next I
     
        For I = 4 To DERNLIGNVIR
     
            If Range("A" & I) = "" Then
            Range("T" & I) = Range("T" & I).Offset(-1, 0).Value
            Range("U" & I) = Range("T" & I).Offset(-1, 0).Value & Range("J" & I).Value & "_" & Range("E" & I).Value
            Else
            Range("T" & I) = Range("A" & I).Value & Range("B" & I).Value
            Range("U" & I) = Range("A" & I).Value & Range("B" & I).Value & Range("J" & I).Value & "_" & Range("E" & I).Value
            End If
     
            If Range("C" & I) = "" Then
            Range("V" & I) = Range("V" & I).Offset(-1, 0).Value
            Else
            Range("V" & I) = Range("C" & I).Value
            End If
     
            Range("X" & I) = Range("Q" & I).Value
     
            Range("Y" & I) = Range("Y" & I).Value
     
        Next I
     
        For I = 4 To DERNLIGNVIR
     
            If Range("T" & I).Value = Range("T" & I).Offset(-1, 0).Value Then
     
                If Range("Q" & I) > 0 Then
                MONTANTVAR = "Du compte "
                COMPTEVARPOSITIF = Range("J" & I).Value & "_" & Range("E" & I).Value
                Range("W" & I) = "Virement " & MONTANTVAR & COMPTEVARNEGATIF1 & " + " & _
                COMPTEVARNEGATIF2 & " + " & _
                COMPTEVARNEGATIF3 & " + " & _
                COMPTEVARNEGATIF4 & " + " & _
                COMPTEVARNEGATIF5 & " + " & _
                COMPTEVARNEGATIF6 & " + " & _
                COMPTEVARNEGATIF7 & " + " & _
                COMPTEVARNEGATIF8 & " + " & _
                COMPTEVARNEGATIF9 & " + " & _
                COMPTEVARNEGATIF10 & " + " & _
                COMPTEVARNEGATIF11 & " + " & _
                COMPTEVARNEGATIF12 & " + " & _
                " Pour " & Range("V" & I).Value
                Else
                MONTANTVAR = "Vers le compte "
                COMPTEVARNEGATIF1 = Range("J" & I).Value & "_" & Range("E" & I).Value
                COMPTEVARNEGATIF2 = Range("J" & I).Value & "_" & Range("E" & I).Value
                COMPTEVARNEGATIF3 = Range("J" & I).Value & "_" & Range("E" & I).Value
                COMPTEVARNEGATIF4 = Range("J" & I).Value & "_" & Range("E" & I).Value
                COMPTEVARNEGATIF5 = Range("J" & I).Value & "_" & Range("E" & I).Value
                COMPTEVARNEGATIF6 = Range("J" & I).Value & "_" & Range("E" & I).Value
                COMPTEVARNEGATIF7 = Range("J" & I).Value & "_" & Range("E" & I).Value
                COMPTEVARNEGATIF8 = Range("J" & I).Value & "_" & Range("E" & I).Value
                COMPTEVARNEGATIF9 = Range("J" & I).Value & "_" & Range("E" & I).Value
                COMPTEVARNEGATIF10 = Range("J" & I).Value & "_" & Range("E" & I).Value
                COMPTEVARNEGATIF11 = Range("J" & I).Value & "_" & Range("E" & I).Value
                COMPTEVARNEGATIF12 = Range("J" & I).Value & "_" & Range("E" & I).Value
                Range("W" & I) = "Virement " & MONTANTVAR & COMPTEVARPOSITIF & " Pour " & Range("V" & I).Value
                End If
     
            End If
     
        Next I
     
    End Sub
    Je joint un fichier exemple pour que cela soit plus représentatif.

    EXEMPLE.xlsm

    Merci par avance à ceux qui pourront me débloquer.

  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
    Pas besoin de VBA pour faire ça.
    Il suffit d'utiliser une fonction SOMME.SI.ENS avec deux critères : valeur > 0 et colonne T = code.

  3. #3
    Membre actif
    Homme Profil pro
    Chef de projet
    Inscrit en
    Avril 2016
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Chef de projet
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2016
    Messages : 90
    Par défaut
    Bonjour,

    Je préfére par le VBA, car là, j'ai pris un exemple de deux ligne mais je peux avoir le cas où il y a plus de 10 lignes.

    De plus, je ne veux pas faire une somme, j'ai déjà les montants d'inscrits.

    C'est le texte que je veux créer dans la colonne W.

Discussions similaires

  1. Mise en page et groupement des données
    Par Kazadsak dans le forum iReport
    Réponses: 0
    Dernier message: 12/07/2010, 10h33
  2. groupement de données
    Par kakikaki dans le forum Forms
    Réponses: 1
    Dernier message: 20/05/2009, 11h33
  3. Groupement données dans un état
    Par fox89 dans le forum IHM
    Réponses: 4
    Dernier message: 13/12/2008, 13h24
  4. Réponses: 6
    Dernier message: 01/12/2007, 23h28
  5. Groupement de donnée texte
    Par Andros dans le forum Langage SQL
    Réponses: 1
    Dernier message: 03/09/2007, 15h29

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