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 :

calculer cumul puis fusionner des cellules avec des valeurs [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 169
    Points : 76
    Points
    76
    Par défaut calculer cumul puis fusionner des cellules avec des valeurs
    Bonjour ou rebonjour,

    voilà , j'ai un tableau à 2 colonne (col A et col B) , dans la première il y a le nom du mois et dans la deuxième des valeurs correspondant à un stock.Je souhaite réaliser une macro qui parcours la colonne A et dès qu'on passe au mois suivant , elle calcule le cumul des valeurs de stock (col B) , puis fusionne la cellule; et puis on passe au mois suivant et ainsi de suite.
    Voici le code pour fusionner les cellules de la colonne B, mais avant celà je souhaite d'abord calculer le cumul de toutes les valeurs (et je n'y arrive pas), puis apres fusionner et afficher le cumul pour le mois correspondant.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Dim DerLig As Long
        Application.DisplayAlerts = False
        Lig1 = 1 'Commencer à la ligne 1 à adapter
        With Sheets("Feuil3") 'nom de la feuille à adapter
            DerLig = .Range("A65536").End(xlUp).Row
            m = .Cells(Lig1, 1): p = Lig1
            For lig = Lig1 To DerLig + 1
                If .Cells(lig, 1) <> m Then
            .Range(.Cells(p, 2), .Cells(lig - 1, 2)).Merge
    Quelqu'un peut il m'éclairer si possible ?

    Merci d'avance

  2. #2
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    c'est l'une des fonctionnalités intégrées d'Excel: sous.total (sans ou avec vba)
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 169
    Points : 76
    Points
    76
    Par défaut
    oui , j'entends bien, mais ce tableau est le résultat d'une macro qui traite un autre fichier.xls que je reçois mensuellement.Ce que je souhaiterais c'est que le sous-total se fasse automatiquement sur ce tableau à chaque fois que j'ai des données supplémentaires (ou mis à jours).Donc ça m'arrangerai d'intégrer un code vba ds ma macro qui fasse le cumul , puis fusionne les cellules (et n'affiche que la valeur du cumul du mois ).

    Merci

  4. #4
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Enregistreur de macro
    et regarde ce qu'il donne pour le sous.total
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  5. #5
    Membre expérimenté Avatar de laetitia
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 281
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 281
    Points : 1 512
    Points
    1 512
    Par défaut
    bonjour le fil le forum si tu tiens vraiment a passer par une macro!!!!!
    mois en colonne E
    occurences de fois en colonne F
    somme en colonne G
    a adapter
    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 es()
     Dim c, d, x As Variant, M As Object
    Application.ScreenUpdating = False
    Set M = CreateObject("Scripting.Dictionary")
    For Each c In Range("A2", [a65000].End(xlUp))
    M(c.Value) = IIf(M.exists(c.Value), M(c.Value) + 1, 1)
    Next c
    [e2].Resize(M.Count, 1) = Application.Transpose(M.keys)
    [f2].Resize(M.Count, 1) = Application.Transpose(M.items)
    [e1] = "mois": [f1] = "nb... mois": [g1] = "somme par mois"
    For Each c In Range("e2", [e65000].End(xlUp))
    For Each d In Range("a1", [a65000].End(xlUp))
    If c = d Then x = x + d.Offset(0, 1).Value
    Next d
    Range("g65536").End(xlUp)(2) = x
    x = 0
     Next c
    End Sub
    SALUTATIONS

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 169
    Points : 76
    Points
    76
    Par défaut
    je crois que j'ai mal formulé ma problèmatique.Je vous joins un fichier excel illustrant mon soucis.Je souhaite faire le cumul des valeurs dans la colonne "C" en fonction du nom du mois (colonne "A") , puis afficher les valeurs de cumul dans le tableau de la feuille 2; et celà sans modifier le tableau de la feuille 1.

    Merci
    Fichiers attachés Fichiers attachés

  7. #7
    Membre émérite Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Points : 2 662
    Points
    2 662
    Par défaut
    Bonjour,
    Au vu du fichier il n'y a pas à s'embêter avec du VBA la formule matricielle suivante donnera le résultat attendu, à copier en B2 de la feuille 2 et copier jusqu'en M2.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {=SUM(IF(Feuil1!$B$2:$B$65536<>"";IF(MONTH(Feuil1!$B$2:$B$65536)=MONTH(Feuil2!B$1);Feuil1!$C$2:$C$65536;0)))}
    Le mieux étant de nommer les plages pour éviter le Somme.Si sur la totalité des lignes.

    A+

    P.S. A toute fin utile, qui dit formule matricielle dit {} donc validation par Ctrl+Shift+Enter

    Edit: C'est pas que j'ai rien d'autre à faire mais la requête SAS est longue, très longue... donc si vous voulez vraiment du code, en voici un petit...

    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
    Sub Totaux()
     
    Dim DerLig As Long, d As Long, LeTot As Long
    Dim c As Byte, LeMois As Byte
     
    For c = 2 To 13 'Boucle sur les mois en feuille 2
        LeMois = Month(Sheets("feuil2").Cells(1, c)) 'Récupère le mois en fonction de la colonne
        DerLig = Sheets("Feuil1").Cells(Columns(2).Cells.Count, 2).End(xlUp).Row 'Défini la dernière ligne remplie de la feuille1 sur base de la colonne 2
            For d = 2 To DerLig 'Boucle sur les lignes de la feuille 2
                If Month(Sheets("Feuil1").Cells(d, 2)) = LeMois Then LeTot = LeTot + Sheets("Feuil1").Cells(d, 3)  'Si le mois correspond on incrémente le Total
            Next d
        Sheets("feuil2").Cells(2, c) = LeTot 'On affecte le total à la cellule correspondante
        LeTot = 0 'Remise à zéro du Total
    Next c 'Passe au mois suivant
     
    End Sub
    N'oubliez pas le si votre problème est solutionné.

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 169
    Points : 76
    Points
    76
    Par défaut
    Impeccable; ça marche !! Merci beaucoup et bon courage

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 24/03/2010, 11h49
  2. Réponses: 3
    Dernier message: 09/10/2009, 18h05
  3. Supprimer des colonnes avec des cellules fusionnées
    Par alain74 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 07/03/2008, 11h07
  4. mettre des n° dans des cellules avec VBA
    Par naitgo dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 16/11/2007, 20h48
  5. Réponses: 4
    Dernier message: 29/08/2007, 16h01

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