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 :

Comparer cellules d'une même colonne une à une [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2013
    Messages : 54
    Points : 34
    Points
    34
    Par défaut
    Bonjour à tous,
    J'ai un tableau qui ressemble à ça :

    CI	           Nb Heures
    713501.MP 	4:00:00
    713501.SC 	5:00:00
    713594	   	6:00:00
    713573	   	7:00:00
    713501.DE 	8:00:00
    713501.AM    	4:00:00
    713571	   	5:00:00
    713501.DM 	6:00:00
    713501.AM 	7:00:00
    713573	   	8:00:00
    Ce que je veux faire, c'est comparer les cellules de la première colonne et si il y a des doublons, additionner les nombres d'heures dans la ligne que je vais garder et supprimer l'autre ligne.
    Mais je ne vois pas du tout comment faire... Pouvez-vous m'aider svp ?

    Voilà le code que j'ai réalisé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Dim fin As Integer
    fin = 30
    For k = 22 To fin Step 1
        If Cells(k, 5).Value = Cells(k + 1, 5).Value Then
            Cells(k, 6).Value = Cells(k, 6).Value + Cells(k + 1, 6).Value
            Cells(k + 1, 1).EntireRow.Delete
            k = k - 1
            fin = fin - 1
        End If
    Next
    Je dois avoir une boucle infinie quelque part parce que la macro ne s'arrète pas et je dois toujours arrêter Excel...

  2. #2
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Points : 3 974
    Points
    3 974
    Par défaut
    Bonjour,

    Essaie comme cela.
    A supposer que les lignes à tester débutent à la ligne 22 et terminent à la dernière ligne renseignée de la colonne A.
    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
    Sub test()
    Dim i As Long
    Dim C As Range
        i = 22
        With Worksheets("Feuil1")
        Do Until .Range("A" & i) = ""
            Set C = .Range(.Range("A" & i), .Range("A" & Rows.Count).End(xlUp)).Offset(1, 0).Find(.Range("A" & i).Value, , xlValues, xlWhole)
            If Not C Is Nothing Then
                .Range("A" & i).Offset(0, 1) = .Range("A" & i).Offset(0, 1) + C.Offset(0, 1)
                C.EntireRow.Delete Shift:=xlUp
            End If
            i = i + 1
        Loop
        End With
    End Sub
    Cordialement.

  3. #3
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 203
    Points : 14 354
    Points
    14 354
    Par défaut
    Bonjour,

    Mes deux sous :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub test()
        Dim C As Range
        For Each C In Range([A2], Cells(Rows.Count, 1).End(xlUp))
            C.Offset(, 2) = Application.SumIf([A:A], C.Value, [B:B])
        Next C
        Range([B2], Cells(Rows.Count, 2).End(xlUp)).Value = Range([C2], Cells(Rows.Count, 3).End(xlUp)).Value
        [B:B].NumberFormat = "[hh]:mm"
        [C:C].ClearContents
        Range([A2], Cells(Rows.Count, 1).End(xlUp)).Resize(, 2).RemoveDuplicates Columns:=Array(1, 2), Header:=xlYes
    End Sub
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

  4. #4
    Membre régulier
    Femme Profil pro
    Inscrit en
    Février 2013
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 56
    Points : 88
    Points
    88
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Sub SousTotal()
      Set d = CreateObject("Scripting.Dictionary")
      For Each C In Range("a2", [a65000].End(xlUp))
         d(C.Value) = d(C.Value) + C.Offset(, 1).Value
      Next C
      Rows("2:100").Delete
      [A2].Resize(d.Count, 1) = Application.Transpose(d.keys)
      [B2].Resize(d.Count, 1) = Application.Transpose(d.items)
      [B:B].NumberFormat = "[hh]:mm"
    End Sub
    Ceuzin
    Fichiers attachés Fichiers attachés

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2013
    Messages : 54
    Points : 34
    Points
    34
    Par défaut [XL-2007] Comparer cellules d'une même colonne une à une
    Merci sophieceuzin ça fonctionne

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 20/11/2012, 20h51
  2. Réponses: 1
    Dernier message: 24/02/2011, 19h11
  3. [AC-2003] ecrire dans une table nligne sur une même colonne
    Par cedill23 dans le forum VBA Access
    Réponses: 2
    Dernier message: 03/07/2009, 18h57
  4. Réponses: 2
    Dernier message: 05/04/2008, 17h33
  5. Réponses: 4
    Dernier message: 02/08/2007, 13h37

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