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 une cellule avec toute la colonne [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Avril 2011
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2011
    Messages : 48
    Par défaut comparer une cellule avec toute la colonne
    bonsoir à tout le monde,
    je vous sollicite car depuis plusieurs jours je tourne en rond. Je voudrais comparer par macro chaque cellule de la colonne D avec toutes celles de cette même colonne. Si je trouve une valeur identique alors concatener les deux lignes de la colonne E en colonne F.
    je ne sais pas si c'est assez explicite je joins un fichier exemple.
    merci d'avance pour votre aide.
    Fichiers attachés Fichiers attachés

  2. #2
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Pour ce que j'ai compris, à aménager, code dans un module :

    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
    Option Explicit
    Public derlg As Long
    Sub Test_doublons()
    With ActiveSheet
       derlg = .Range("a" & .Rows.Count).End(xlUp).Row
       IdentifieDoublons
    End With
    End Sub
     
    Sub IdentifieDoublons()
    Dim Un As Collection, x As Long
    Set Un = New Collection
    On Error Resume Next
    With ActiveSheet
       For x = 1 To derlg
          If Range("D" & x) <> "" Then
             Un.Add Range("D" & x), CStr(Range("D" & x))
             If Err <> 0 Then
                .Range("F" & x) = .Range("E" & x - 1) & " - " & .Range("E" & x)
                .Range("A" & x - 1).EntireRow.Delete 'les lignes en double sont supprimées
                x = x - 1
             End If
                'Efface toutes les valeurs de l'objet Err.
             Err.Clear
          End If
     
       Next x
    End With
    Set Un = Nothing
    End Sub
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  3. #3
    Membre Expert
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Par défaut
    Si j'ai bien compris ce que tu attends comme résultat:

    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
    Sub t()
    derlig = 9
    Dim deux As New Collection
     For i = 1 To derlig
     ok = False
         deux.Add Cells(i, 5).Value, Cells(i, 5).Value
      For j = 1 To derlig
       If j <> i Then
        If Cells(j, 4).Value = Cells(i, 4).Value Then
         On Error Resume Next
          deux.Add Cells(j, 5).Value, Cells(j, 5).Value
         ok = True
        End If
       End If
      Next
      If ok = True Then
      Concatenation = ""
      For k = 1 To deux.Count
       Concatenation = Concatenation & " " & deux.Item(k)
      Next
      Cells(i, 6).Value = Concatenation
      End If
      Set deux = Nothing
     Next
    End Sub

  4. #4
    Membre confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Avril 2011
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2011
    Messages : 48
    Par défaut
    Bonsoir le forum et bonsoir et merci à casefayere et docmarti pour votre aide.
    C'est la solution proposée par doctmarti qui correspond le mieux à ce que je cherche comme résultat. Il faut maintenant que j'arrive a comprendre le code pour poursuivre. au cas ou je vous re sollicite.
    encore merci pour votre aide

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 18/10/2014, 14h01
  2. Réponses: 2
    Dernier message: 31/12/2012, 19h21
  3. comparer une cellule avec une variable
    Par nessing dans le forum C++Builder
    Réponses: 9
    Dernier message: 05/08/2007, 22h54
  4. Réponses: 9
    Dernier message: 14/06/2007, 16h43
  5. Réponses: 7
    Dernier message: 20/06/2005, 17h00

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