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 :

Effacer les doublons à la fermeture [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 10
    Par défaut Effacer les doublons à la fermeture
    Bonjour, je m'en remets à vous car je suis au bord du gouffre. J'ai récupérer un fichier qu'un ex collaborateur avait fait et j'essaie tant bien que mal de le rendre utilisable mais je bloque sur certaines fonctionnalités.

    Ainsi je souhaiterai, à la fermeture de mon fichier, effacer les lignes dont la cellule en colonne Z est égal (si possible en effacant la cellule la plus haute dans le tableau... ex: si Z1 = Z2 effacer Z1) et si possible effacer les lignes dont la cellule en colonne Z est égal à celle d'une ligne dans ma feuille 2.

    Désolé si je me suis mal expliqué et je suis à votre disposition mais croyez-moi, je suis au bord de la crise de nerf...

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    633
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 633
    Par défaut
    Bonjour

    j'ai mis un peu de temps à trouver la bonne solution mais essaye ce code

    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
    Sub supLigne()
    Dim ws1 As Worksheet, ws2 As Worksheet
    Dim Lws1 As Integer, Lws2 As Integer
    Dim VC As String, VT As Range
    Dim suivant As Boolean
     
    Set ws1 = Worksheets("Feuil4")
    Set ws2 = Worksheets("Feuil5")
     
    Lws1 = ws1.Cells(Rows.Count, 26).End(xlUp).Row
    Lws2 = ws2.Cells(Rows.Count, 26).End(xlUp).Row
    suivant = False
     
    Do While Lws1 > 1
      VC = ws1.Cells(Lws1, 26) 'valeur à chercher
      Do
        With ws1
          'verifier si la valeur est dans la feuille 1
          Set VT = .Range("Z1:Z" & Lws1 - 1).Find(VC, LookIn:=xlValues, lookAt:=xlWhole)
          If Not VT Is Nothing Then 'si on la trouve au dessus
            .Rows(VT.Row & ":" & VT.Row).Delete Shift:=xlUp 'on supprime la ligne
            Lws1 = Lws1 - 1 '
            suivant = True ' on en cherche un autre
          Else
            suivant = False 'il n'y en a plus -> sortir de la boucle
          End If
        End With
      Loop While suivant = True And Lws1 > 1
     
      'idem en verifiant dans la feuille 2 si la valeur est dans la feuille 2
      If Not ws2.Range("Z1:Z" & Lws2).Find(VC, LookIn:=xlValues, lookAt:=xlWhole) Is Nothing Then _
        ws1.Rows(Lws1 & ":" & Lws1).Delete Shift:=xlUp
      Lws1 = Lws1 - 1
    Loop
     
    Set ws1 = Nothing
    Set ws2 = Nothing
    Set VT = Nothing
    End Sub
    ensuite si ça te conviens il faudra mettre le code dans thisWorkbook
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Workbook_BeforeClose(Cancel As Boolean)
     
    'inserer le code ici
     
    End Sub
    a+

  3. #3
    Membre Expert Avatar de laetitia
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 281
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 281
    Par défaut
    bonjour Usgpa zyhack peut être comme cela dans thisworkbook a tester eventuellement utiliser with

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Dim i As Long
     Sheets("Feuil2").Activate
     For i = Cells(Rows.Count, 26).End(xlUp).Row To 2 Step -1
       If Cells(i, 26) = Cells(i - 1, 26) Then Cells(i - 1, 26).EntireRow.Delete
        Next i
    ThisWorkbook.Save
    End Sub

  4. #4
    Expert éminent 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
    Par défaut
    Pour la première question
    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
    Dim Plage As Range
    Dim LastLig As Long, i As Long
     
    Application.ScreenUpdating = False
    With Sheets("Feuil3")
        LastLig = .Cells(Rows.Count, "Z").End(xlUp).Row
        Set Plage = .Range("Z1:Z" & LastLig)
        Plage.AdvancedFilter Action:=xlFilterInPlace, Unique:=True
        For i = LastLig To 2 Step -1
            If .Rows(i).Hidden Then .Rows(i).Delete
        Next i
        On Error Resume Next
        .ShowAllData
        On Error GoTo 0
    End With
    Edit: Bonjour Laétitia, Zyhak, désolé pas rafraichi

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 10
    Par défaut
    Merci beaucoup pour vos réponses !!!

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

Discussions similaires

  1. Effacer les doublons
    Par Jerem38 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 29/05/2009, 19h59
  2. Lire des fichiers et effacer les doublons
    Par Saten dans le forum Windows Forms
    Réponses: 1
    Dernier message: 12/11/2008, 17h18
  3. [SQL] Je n'arrive pas a effacer les doublons
    Par guillaumeIOB dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 12/09/2007, 17h39
  4. Comment effacer les doublons ?
    Par James64 dans le forum Bases de données
    Réponses: 4
    Dernier message: 14/11/2005, 16h15
  5. Comment effacer les Doublons en SQL
    Par LeBigornot dans le forum Langage SQL
    Réponses: 2
    Dernier message: 20/05/2005, 10h22

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