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 :

Vider les cellules en doublon sans changer la mise en page. [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mars 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2012
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Vider les cellules en doublon sans changer la mise en page.
    Bonsoir.
    Je recherche un code en VBA pour vider les cellules en doublon dans les lignes d' une mise en page excel issue d'un SQL. Vous trouverez en pièce jointe la page excel avec les cellules vertes que je veux vider/supprimer mais sans changer les valeurs ou emplacement des cellules blanches.
    Merci de votre aide ...
    Images attachées Images attachées  

  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
    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
    Sub EffacerDoublons()
    Dim i As Long
    Dim Tb
     
    Application.ScreenUpdating = False
    With Worksheets("Feuil1")                        'Adapte le nom de ta feuille
        Tb = Intersect(.Range("A1").CurrentRegion, .Range("A:M"))
        For i = UBound(Tb, 1) To 2 Step -1
            If Not NoDoublon(Tb, i) Then Efface Tb, i
        Next i
        .Range("A1").Resize(UBound(Tb, 1), 13) = Tb
    End With
    End Sub
     
    Private Function NoDoublon(ByVal Tb, ByVal i As Long) As Boolean
    Dim j As Integer
     
    For j = 1 To 13                                  'On teste de la colonne A à M
        If Tb(i, j) <> Tb(i - 1, j) Then
            NoDoublon = True
            Exit For
        End If
    Next j
    End Function
     
    Private Sub Efface(ByRef Tb, ByVal i As Integer)
    Dim j As Byte
     
    For j = 1 To 13                                  'on vide de la colonne A à M
        Tb(i, j) = Empty
    Next j
    End Sub
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

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

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Re, bonsoir mercatog,
    j'avais préparé quelque chose de plus simple (sans l'avoir testé) en ayant estimé que toutes les réferences (col I) sont groupées :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub sup_lignes()
    Dim derlg As Long, codePrim As Long, x As Long
    derlg = Range("I" & Rows.Count).End(xlUp).Row
    For x = 3 To derlg
      codePrim = WorksheetFunction.CountIf(Range("I" & x, "I" & derlg), Range("A" & x - 1))
      Range("A" & x, "M" & codePrim).ClearContents
      x = codePrim + 1
    Next x
    End Sub
    Je répète => non testé donc erreurs possibles
    Bonne soirée
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur 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...)

  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
    Bonsoir casefayere
    Bien vu pour la colonne I (si c'est systématique)
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

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

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Par contre, j'ai envie de préciser à kakariki que passer par une boucle comme celle que je propose, risque de ralentir son programme s'il a beaucoup de lignes à traiter et dans ce cas passer par les variables tableau.

    Bonne nuit à tou(te)s
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur 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...)

  6. #6
    Candidat au Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mars 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2012
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Un grand merci
    Merci pour le code ...

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 17/01/2013, 16h23
  2. Réponses: 1
    Dernier message: 10/04/2012, 23h12
  3. Fusionner les cellules des doublons dans excel
    Par sihammaster dans le forum VB.NET
    Réponses: 8
    Dernier message: 10/05/2010, 11h28
  4. [PPT-2007] Copier slide d'un ppt sans perdre la mise en page
    Par Akxn0008 dans le forum VBA PowerPoint
    Réponses: 1
    Dernier message: 28/08/2009, 17h20
  5. Réponses: 2
    Dernier message: 24/10/2007, 11h44

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