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 excel : delete des lignes contenant une chaîne de caractères


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Femme Profil pro
    Consultant informatique
    Inscrit en
    Avril 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Avril 2017
    Messages : 8
    Par défaut Macro excel : delete des lignes contenant une chaîne de caractères
    Bonjour,

    Dans un tableau, je souhaite supprimer toutes les lignes contenant la chaine de caractères ÉÍ
    Voici mon 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
    Sub Edit_C11_Mise_en_forme()
     
        NOMFICH = Application.InputBox(Prompt:="Nom du fichier : ", Type:=2)
        Workbooks(NOMFICH).Activate
     
    ' Recherche du nombre de lignes dans la feuille
        Nbligne = Range("A" & Rows.Count).End(xlUp).Row
     
    ' Suppression ligne contenant ÉÍ
        Dim Vligne As Range
        For WJ = 1 To Nbligne
            If Vligne Like "ÉÍ" Then Vligne.Rows.Delete
        Next WJ
     
    'Enregsitrement du fichier
         ActiveWorkbook.Save
     
    End Sub
    Lorsque je lance la macro j'ai le message d'erreur "Erreur d'exécution 91, Variable objet ou variable bloc With non définie"
    L'erreur est sur l'instruction If Vligne Like "ÉÍ" Then Vligne.Rows.Delete

    Pourquoi ? Que dois-je faire?


    Je vous remercie.

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 168
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 168
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    l faudrait placer ton code entre les balises prévues à cet effet (la commande # dans l'éditeur) sinon il est impossible de t'indiquer le n° des lignes qui posent éventuellement problème.

    Tu déclares la variable Vligne comme un Range, tu effectues un test avec celle-ci mais jamais tu ne lui assignes une valeur ?
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    En plus de la remarque pertinente de Philippe Tulliez ( ) qui est certainement la source de l'erreur signalée, deux remarques :

    Citation Envoyé par CPE23 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        NOMFICH = Application.InputBox(Prompt:="Nom du fichier : ", Type:=2)
    A ta place, j'aurais plutôt utilisé GetOpenFilename ou Dialogs.
    https://msdn.microsoft.com/library/8...ice.15%29.aspx
    https://msdn.microsoft.com/library/0...ice.15%29.aspx

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        For WJ = 1 To Nbligne
            If Vligne Like "ÉÍ" Then Vligne.Rows.Delete
        Next WJ
    Pour les suppression et les insertions, on part toujours de la dernière ligne pour remonter à la première (Step -1).
    Sinon, tu as de grandes chances de laisser passer des cas.

    Autre petit détail : plutôt que Rows, j'aurais mis EntireRow avant le Delete.
    Ca ne change sans doute pas grand chose mais ça me semble plus propre.

  4. #4
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut
    Bonjour,

    et en espérant qu'il n'y a pas beaucoup de lignes à traiter, cette voie par boucle étant la plus lente !

    ___________________________________________________________________________________________________________________________
    Je suis Paris, Egypte, Nigeria, New-York, Mogadicio, Barcelone, London, Manchester, Stockholm, Istanbul, Berlin, Nice, Bruxelles, Charlie, …

  5. #5
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    problème récurrent et déjà longuement abordé. Eviter les boucles et NE JAMAIS supprimer en allant de haut en bas

    Au choix :

    1) niveau simple : filtre automatique sur "<>" et ta chaine de caractère puis suppression de la plage visible
    2) niveau plus abouti : une colonne temporaire avec une formule excel qui marquera 1 pour les lignes répondant à la contrainte, et 0 pour les autres. On fait ensuite un tri croissant de la plage, et on .Delete les lignes d'en bas
    3) niveau subtil : au lieu de .Delete sur la second proposition, on .Clear
    4) niveau encore plus subtil : essaye déjà les trois premières

  6. #6
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour Joe.levrai
    parle-lui dans la foulée de cet étrange
    qui, utilisé sans caractères génériques, est un .... = (et je doute assez que certaines de ses cellules ne contiennent que "ÉÍ"
    Cela "sent" une fois de plus du code "ramassé" sans le comprendre ... Et cette senteur est la raison de mon mutisme depuis le début.

  7. #7
    Membre régulier
    Femme Profil pro
    Consultant informatique
    Inscrit en
    Avril 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Avril 2017
    Messages : 8
    Par défaut
    Merci à tous.

    je vais essayer vos solutions.

    Je tiens à préciser que je n'ai jamais coder une macro excel, et que c'est pour moi la totale déocouverte.

Discussions similaires

  1. Recherche des fichiers contenant une chaîne de caractères
    Par laurentSc dans le forum Windows 7
    Réponses: 2
    Dernier message: 19/08/2015, 23h34
  2. Supprimer des lignes contenants une plage de doublons
    Par mustangrr dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 05/12/2012, 09h09
  3. Macro pour grouper des lignes sur une plage qui peut varier
    Par RichRich59 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 26/01/2011, 13h04
  4. Macro pour grouper des lignes sur une plage qui peut varier
    Par girardinho dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 26/07/2010, 09h43
  5. Excel-copier des lignes sur une autre feuille
    Par petecul dans le forum Excel
    Réponses: 7
    Dernier message: 13/09/2007, 02h56

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