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 sommes cellules en doublons sur même ligne. [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Homme Profil pro
    Comptable
    Inscrit en
    Janvier 2019
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Comptable
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2019
    Messages : 8
    Par défaut Macro sommes cellules en doublons sur même ligne.
    Bonjour à tous,

    Je suis nouveau sur le forum, je ne suis pas très doué pour les Macros et j'ai un souci pour faire la sommes des valeurs en doublons qui sont sur la même ligne.

    Alors je m'explique, j'ai un tableau sur lequel est référencé des données de stagiaires. Un stagiaire peut effectuer une formation dans le mois sur plusieurs sites différents avec un parcours sur 3 phases, mais il peut arriver que le stagiaire fasse un stage sur 2 sites identique entre la phase 1 et la phase 3.

    Donc voici comment se présente mon tableau (je mets également le fichier en pièce jointe) :

    OF dans le tableau = site.

    - de la colonne A à I il y a tout les éléments concernant le stagiaire.
    - de la colonne J à U il y a les sites sur lesquels le stagiaire a effectué ses stage avec le nombre d'heures

    Je souhaite que dans la colonne V il y ai le total des heures effectuées sur le site qui est en doublon s'il y en a un et que s'il n'y a pas de site en doublon la cellule reste vide.

    Je pense que vous allez mieux comprendre en regardant le fichier joint.

    Merci pour votre aide.

    Bien cordialement.

    Tableau de suivi.xls

  2. #2
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Bonjour et bienvenu sur ce Forum,

    2 questions:
    Si 1 site est mentionné 3 fois, la somme s'effectue-t-elle sur les 3? (tu évoques des doublons et je préfère poser la question)
    Se peut-il que 2 sites différents soient en doublon sur la même ligne. (site1, site1, site3, site2, site2)?

    Quant au processus.
    Je me demande si une formulation Excel ne répondrait pas au besoin Personnellement, je ne la vois pas.
    Si l'on envisage un développement en VBA, et dans la négative à ma 2ème question, alors j'envisagerais une démarche assez triviale.
    Pour chaque ligne, dictionnaire sur les sites.
    Pour chaque clé de celui-ci, compter le nombre de fois où il se trouve sur la ligne et sommer les heures si le nombre est supérieur à 1.

  3. #3
    Membre du Club
    Homme Profil pro
    Comptable
    Inscrit en
    Janvier 2019
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Comptable
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2019
    Messages : 8
    Par défaut
    Bonjour MarcelG,

    Tout d'abord merci pour votre réponse.

    Concernant votre première question, oui, si un site est mentionné 3 fois, la somme doit s'effectuer sur les 3.

    Pour la deuxième question, non, 2 sites différents ne peuvent pas être en doublon sur la même ligne.

    D'ailleurs je viens d'y penser il faut également créer une nouvelle colonne dans laquelle sera mentionnée le nom du site qui est en doublons.

    Merci pour l'aide que vous pourrez m'apporter.

    Cordialement.

  4. #4
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Salut,

    Voici, Voilou,

    N'oublie pas d'activer la Référence "Microsoft Scripting RunTime" dans l'éditeur VBE (Menu Outils\Références)

    Tu consultes le code.
    Autrement dit, tu regardes toutes les méthodes et propriétés qui y sont reportées, et tu reviens à la moindre question.

    En colonne V : le site en doublon
    En colonne W: le cumul des heures

    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
    Option Explicit
     
    Public Sub somh_dbl()
     
    'Activer la Référence Scripting RunTime
    Dim dico As Scripting.Dictionary
     
    Dim dernl As Integer, i As Integer
    Dim col As Byte
    Dim d As Variant
    Dim nb As Byte, somh As Byte
     
    With ThisWorkbook.Worksheets("Suivi heures Centre")
            dernl = .Cells(.Rows.Count, 10).End(xlUp).Row
            For i = 12 To dernl
                    Set dico = CreateObject("Scripting.Dictionary")
                    'Balayage des colonnes J à T
                    'Dictionnaire des sites sur la ligne i, toutes les 2 colonnes
                    For col = 10 To 20 Step 2
                            With .Cells(i, col)
                                    If Not dico.Exists(.Value) Then dico.Add .Value, .Value
                            End With
                    Next col
                    'Pour chaque clé du dictionnaire, nombre dde présences sur la ligne et somme des heures
                    For Each d In dico.Keys
                            nb = 0
                            somh = 0
                            'Sommation toutes les 2 colonnes de J à T
                            For col = 10 To 20 Step 2
                                    If .Cells(i, col) = d Then
                                        nb = nb + 1
                                        somh = somh + .Cells(i, col + 1)
                                     End If
                              Next col
                              'Information des colonnes V (site en doublon) et W (somme des heures)
                              If nb > 1 Then
                                    .Cells(i, 22).Value = d
                                    .Cells(i, 23).Value = somh
                                    Exit For
                              End If
                    Next d
                    Set dico = Nothing
                    With .Cells(i, 23)
                            If .Value = 0 Then .Value = ""
                    End With
            Next i
    End With
     
    End Sub

  5. #5
    Membre du Club
    Homme Profil pro
    Comptable
    Inscrit en
    Janvier 2019
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Comptable
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2019
    Messages : 8
    Par défaut
    Bonjour,

    J'ai essayé la macro et ça fonctionne parfaitement.
    Maintenant je vais essayer de faire la même chose pour tous les autres mois, si je rencontre un souci je reviendrai vers toi.

    Merci énormément de ton aide.

  6. #6
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Bonjour Part, Bonjour le Forum,

    Content que la procédure soit effective.

    Si tous les mois, les feuilles ont la même structure, alors la procédure peut être argumentée du nom de la feuille, ou de la feuille elle-même.
    Regarde ce que j’ai écrit dans cette discussion, ouverte par notre ami Antoine, au sujet des procédures argumentées.

    N’oublie pas de placer cette discussion en mode « Résolue »

    Bonne continuation.

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

Discussions similaires

  1. [XL-2007] comparaison cellule date sur même ligne et MFC
    Par karlgina dans le forum Excel
    Réponses: 4
    Dernier message: 02/09/2016, 11h47
  2. [XL-2010] macro sélectionne cellule modifiée (rester sur même cellule)
    Par arthour973 dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 17/05/2015, 19h29
  3. Expression régulière sur même ligne
    Par knebhi dans le forum Langage
    Réponses: 1
    Dernier message: 20/03/2009, 17h49
  4. combobox 2 selections consécutives sur même ligne impossible
    Par oscar.cesar dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 04/11/2007, 14h46
  5. supprimer doublons sur 40000 lignes
    Par eillon dans le forum Excel
    Réponses: 28
    Dernier message: 25/10/2007, 13h33

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