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 :

Macro de suppression comparative


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Inscrit en
    Octobre 2010
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 8
    Par défaut Macro de suppression comparative
    Bonsoir,
    Quelqu'un pourrait-il m'aider SVP à créer une macro sur Excel pour effectuer les actions suivantes :
    Ayant deux feuilles de calcul d'un classeur Excel, la première ayant une colonne avec des noms (par ex: de A1:A65635) et sur la deuxième feuille une colonne que je rempli avec des noms qui sont tous ou partiellement dans la colonne de la première feuille, je voudrai que lorsque j'active cette macro elle enlève les noms que j'ai tapé sur la deuxième feuille sur la première feuille. Bref faire une sorte de mise à jour de mes données de la première feuille.
    Merci pour la suite.

  2. #2
    Membre confirmé
    Homme Profil pro
    ELECTROTECHNICIEN
    Inscrit en
    Mars 2010
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ELECTROTECHNICIEN
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2010
    Messages : 61
    Par défaut
    Bonsoir 0916paps

    Essayes ce code !
    J'ai fais un essai avec une colonne dans une Feuil1 et une colonne à comparer sur la Feuil2
    La macro efface toutes les lignes de la feuil1 qui sont connue dans la colonne A de la feuille 2

    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
    Sub macro2()
    Dim lf1 As Long
    Dim lf2 As Long
    Dim A, B
    Sheets("Feuil2").Select
    lf1 = Range("A65536").End(xlUp).Row
     
    For i = 2 To lf1
        A = Feuil2.Range("A" & i).Value
     
        Sheets("Feuil1").Select
        lf2 = Range("A65536").End(xlUp).Row
     
        For j = 2 To lf2
        B = Feuil1.Range("A" & j).Value
        If A = B Then Rows(j).Delete
        Next
     
    Next
    End Sub
    Bonne soirée

  3. #3
    Membre habitué
    Inscrit en
    Octobre 2010
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 8
    Par défaut Recherche de noms inscrits dans une feuille et si il y a les mêmes dans une autre feuille alors supprime-les.
    Merci pour ta réponse,
    Je vois que je suis très loin de votre savoir.
    J'ai essayé ton code, cela marche mais ce n'est pas exactement ce que je souhaite.
    Je joins au présent un fichier qui je l'espère te guidera dans ta résolution de mon problème.
    J'attends avec impatience ta solution,...
    Cordialement.
    Fichiers attachés Fichiers attachés

  4. #4
    Membre confirmé
    Homme Profil pro
    ELECTROTECHNICIEN
    Inscrit en
    Mars 2010
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ELECTROTECHNICIEN
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2010
    Messages : 61
    Par défaut
    Ne t'inquiète pas ! Moi aussi j'apprends le VBA depuis moins d'un ans
    Quand tu commences à découvrir toutes les possibilités tu deviens accro

    Il n'y a de problème, mon code prend en compte une ligne d'entête dans chaque feuille (i = 2 To lf1)

    Si tu mets DUPONT sur la ligne 2 ca marchera

    Bon courage

  5. #5
    Membre habitué
    Inscrit en
    Octobre 2010
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 8
    Par défaut Désolé, mais...
    Je suis désolé, mais si j'active ton code alors je passe sur la Feuil1 sans que soit supprimer le ou les noms inscrit dans la Feuil2.
    Alors je pense que je suis trop nul pour réussir ta solution
    Pourrais-tu me faire le fichier que je t'ai envoyé avec la macro et son code.
    Merci pour ton aide.
    Cordialement.

  6. #6
    Membre confirmé
    Homme Profil pro
    ELECTROTECHNICIEN
    Inscrit en
    Mars 2010
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ELECTROTECHNICIEN
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2010
    Messages : 61
    Par défaut
    J'ai fait un peu de propre dans mon code
    Normalement celui-ci devrait marcher sans ligne d'entête

    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
    Sub macro2()
    Dim lf1 As Long
    Dim lf2 As Long
    Dim A, B
     
    lf1 = Feuil2.Range("A65536").End(xlUp).Row
    lf2 = Feuil1.Range("A65536").End(xlUp).Row
     
    For i = 1 To lf1
        A = Feuil2.Range("A" & i).Value
        For j = 1 To lf2
        B = Feuil1.Range("A" & j).Value
        If A = B Then Feuil1.Rows(j).Delete
        Next
     
    Next
    End Sub
    http://www.developpez.net/forums/att...1&d=1287521145

  7. #7
    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 ton fichier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim c As Range
     
    For Each c In Sheets("Feuil1").Range("A1").CurrentRegion
        If InStr(c, trim(Sheets("Feuil2").Range("A1"))) > 0 Then c.ClearContents
    Next c

  8. #8
    Membre habitué
    Inscrit en
    Octobre 2010
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 8
    Par défaut
    C'est super, tu avances çà supprime les noms mais j'ose te demander de préciser encore mieux ton code dans les conditions suivantes :
    Admettons qu'il y a des noms dans n'importe quelles cellules de la Feuil1 et que ayant inscrit dans une colonne de la Feuil2 un ou/et plusieurs noms j'active une macro lui demandant de supprimer les noms correspondants dans la Feuil1 en laissant les cellules vides.
    Je suis très confiant et te souhaite de réussir.
    Merci mille fois.
    Cordialement.

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

Discussions similaires

  1. macro de suppression
    Par speculos dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 28/10/2010, 16h22
  2. [XL-2000] macro de suppression
    Par dybmans dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 22/10/2010, 17h25
  3. [XL-2003] Macro de suppression de ligne avec un mot
    Par harisman87 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 19/07/2010, 16h50
  4. [Excel] Macro pour suppression de caractères bizarres
    Par mika0102 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 11/07/2008, 13h29
  5. [Macro] problème fonction compare
    Par Tyler Durden dans le forum Macro
    Réponses: 7
    Dernier message: 09/07/2008, 22h37

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