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 :

Suppression données dans une colonne par comparaison et conditions [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Suppression données dans une colonne par comparaison et conditions
    Bonsoir,

    Je voudrais parcourir la colonne (M) contenant des observations afin de les réduire par suppression.
    Et selon, les conditions suivantes:si les valeurs de la colonne B sont égales, ainsi que celles des colonnes D et K,
    on vérifie celles de la colonne M et si elles sont égales, on ne garde qu'une seule de celles-ci.

    Je vous remercie beaucoup.

    Cordialement,
    Fichiers attachés Fichiers attachés

  2. #2
    Membre éprouvé
    Formateur en informatique
    Inscrit en
    Janvier 2011
    Messages
    134
    Détails du profil
    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Janvier 2011
    Messages : 134
    Par défaut
    Bjr,

    en saisissant cette formule qu'il faut valider par Ctrl + Shift + Entrée à coté de la colonne des observations et en la recopiant cela n'affiche que les premières observations.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {=SI(LIGNE(M2)=MIN(SI((B2=$B$2:$B$65)*(D2=$D$2:$D$65)*(K2=$K$2:$K$65)*(M2=$M$2:$M$65)>0;(B2=$B$2:$B$65)*(D2=$D$2:$D$65)*(K2=$K$2:$K$65)*(M2=$M$2:$M$65)*LIGNE($M$2:$M$65);""));M2;"")}
    Cdt
    Fichiers attachés Fichiers attachés

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Je te remercie pour ta réponse. J'avais oublié de signaler que ma feuille peut comporter plus de 65 lignes (elle est renseignée par macro à partir d'une base de données).
    Je recherche une solution par VBA que je ne maitrise pas très bien.
    Est-il possible de le faire en utilisant les fonctions chaines de caractères ou toutes autres solutions.

    Merci beaucoup pour ton aide.

    Cordialement,

  4. #4
    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
    Par défaut
    Bonjour,

    Une solution avec un tableau intermédiaire.
    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
    Sub test()
    Dim Plage As Range
    Dim Tablo
    Dim i As Long, j As Long
        With Worksheets("Feuil1")
            Set Plage = .Range("A1:M" & .Range("A" & Rows.Count).End(xlUp).Row)
            Tablo = Plage
            For i = 1 To UBound(Tablo, 1) - 1
                For j = i + 1 To UBound(Tablo, 1)
                    If Tablo(i, 2) = Tablo(j, 2) And _
                    Tablo(i, 4) = Tablo(j, 4) And _
                    Tablo(i, 11) = Tablo(j, 11) Then
                        If Tablo(i, 13) = Tablo(j, 13) Then Tablo(j, 13) = ""
                    End If
                Next j
            Next i
            Plage = Tablo
        End With
    End Sub
    Cordialement
    Fichiers attachés Fichiers attachés

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour gFZT82,

    Je te remercie beaucoup, ton code fonctionne très bien.

    Puis-je me permettre pour te poser une autre question?

    En fait, je voudrais rajouter une condition à ce code.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Tablo(i, 13) <> Tablo(j, 13) Then Tablo(j, 13) = Tablo(i,13) & Tablo(j,13)
    Et effacer le contenu comme précédemment. Comment faire pour effacer dans les 2 cas (valeurs égales et différentes), pour la première on efface et, pour la seconde on transfert puis on efface. Je te remercie beaucoup.


    Cordialement,
    Fichiers attachés Fichiers attachés

  6. #6
    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
    Par défaut
    En fait, je voudrais rajouter une condition à ce code.
    If Tablo(i, 13) <> Tablo(j, 13) Then Tablo(j, 13) = Tablo(i,13) & Tablo(j,13)
    Et effacer le contenu comme précédemment.
    Comment faire pour effacer dans les 2 cas (valeurs égales et différentes) ?
    Pour la première on efface et, pour la seconde on transfert puis on efface
    Désolé, mais je ne comprends pas quel résultat tu cherches à obtenir.
    Je reformule:
    Si 2 lignes ont des valeurs identiques en B, D et K,
    on concatènes les 2 observations dans la cellule M de la deuxième ligne, que les observations des 2 lignes soient identiques ou pas.
    puis on efface le contenu de la cellule M de la première ligne, on transfère la seconde (où ??) puis on l'efface.
    Si je traduis bien, ça revient à transférer le contenu des 2 observations et à effacer la cellule M des 2 lignes.

    Cordialement.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 02/09/2011, 13h59
  2. [JTable] Personnaliser l'insertion des données dans une colonne
    Par grospatapouf dans le forum Composants
    Réponses: 0
    Dernier message: 15/10/2008, 08h34
  3. chercher une donné dans une colonne de StringGrid
    Par faniette dans le forum C++Builder
    Réponses: 5
    Dernier message: 24/06/2008, 13h27
  4. Mise à jour des données dans une colonne
    Par BZH75 dans le forum SQL
    Réponses: 9
    Dernier message: 09/01/2008, 16h18
  5. Réponses: 3
    Dernier message: 26/07/2006, 14h58

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