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 de lignes avec Macro


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Janvier 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Auditeur informatique

    Informations forums :
    Inscription : Janvier 2015
    Messages : 4
    Points : 1
    Points
    1
    Par défaut Suppression de lignes avec Macro
    Bonsoir,

    J'ai un problème avec une macro qui fonctionnait parfaitement dans un autre fichier excel.
    Ce fichier a été mis à jour pour 2015 mais les données n'ont pas été changées.

    La macro est censée recherchée les cellules vides sur une plage puis supprimer les lignes correspondantes; la voici :



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    If MyString = "Oui" Then
    Sheets("A SUPP reco").Select
    Range("B19:F115").Select
        Selection.Sort Key1:=Range("C19"), Order1:=xlAscending, Key2:=Range("B21" _
            ), Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:= _
            False, Orientation:=xlTopToBottom
    Columns(3).Find("Vide").Select
    lig_dep = Selection.Row
    Range(lig_dep & ":120").Select
    Selection.Delete Shift:=xlUp
    End If
    Range("A1").Select
    End Sub

    Sauf que lorsque je la lance j'ai l'erreur suivante : "erreur d'exécution 91"

    Pourriez vous m'aider ?

    Merci par avance

  2. #2
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par nitro95 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Columns(3).Find("Vide").Select
    lig_dep = Selection.Row
    Bonjour,

    Comment êtes-vous sûr de l'existence du mot "Vide" en colonne C ?

    Cordialement.

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Janvier 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Auditeur informatique

    Informations forums :
    Inscription : Janvier 2015
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Je n'en suis pas sur, je cherche les cellules vides!
    Dans cette colonne, il y a une fonction Si, si elle est fausse les colonnes sont vides.
    Le debogeur me dit que l'erreur vient de cet endroit mais je ne comprends pas pourquoi car cela fonctionnait auparavant !

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par nitro95 Voir le message
    Dans cette colonne, il y a une fonction Si, si elle est fausse les colonnes sont vides.
    Le debogeur me dit que l'erreur vient de cet endroit mais je ne comprends pas pourquoi car cela fonctionnait auparavant !
    S'il n'y a pas de cellule avec le mot "Vide", lig_dep n'est pas trouvée et la sélection échoue. Il vous faut tester la présence du mot "Vide" pour sélectionner et supprimer.

    Cordialement.

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Janvier 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Auditeur informatique

    Informations forums :
    Inscription : Janvier 2015
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Merci, je suis débutant donc je manque d'idées !

    Si je mets un mot "vide" caché en début de sélection, est ce que cela peut fonctionner ?

  6. #6
    Invité
    Invité(e)
    Par défaut
    Une proposition sans trier l'aire B19:F115 et jusqu'à la ligne 115

    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
    Sub EssaiSuppressionLignes()
     
    Dim FeuilleReco As Worksheet
    Dim LigneEnCours As Long
    Dim ColonneATester As Long
    Dim MyString As String
     
        MyString = "Oui"
     
        If MyString = "Oui" Then
            Set FeuilleReco = Sheets("A SUPP reco")
            ColonneATester = 3
            With FeuilleReco
                 For LigneEnCours = 115 To 19 Step -1
                     If .Cells(LigneEnCours, ColonneATester) = "Vide" Then .Cells(LigneEnCours, ColonneATester).EntireRow.Delete Shift:=xlUp
                 Next LigneEnCours
            End With
            Set FeuilleReco = Nothing
        End If
     
    End Sub
    Cordialement.

  7. #7
    Membre expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 869
    Points : 3 442
    Points
    3 442
    Billets dans le blog
    1
    Par défaut
    Pour rechercher des cellules vide il est inutile d'écrire le mot "vide" (car du coup c'est plus vide)

    donc je te conseille d'utilisé soit : IsEmpty (faire pour plus de détail), soit :"" (sans rien entre les guillemets)

    j'espère que ces 2 pistes t'aideront pour résoudre ton problème

    A+

  8. #8
    Nouveau Candidat au Club
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Janvier 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Auditeur informatique

    Informations forums :
    Inscription : Janvier 2015
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Hello,

    Merci pour votre réponse, j'ai réussi à adapter ce que je voulais grâce au code fourni.

    Dorénavant, une autre idée me vient à l'esprit mais je ne sais pas comment mettre cela en pratique :

    Avant de lancer la macro (en cliquant sur un objet), je veux qu'elle s'assure que toutes les lignes contiennent "oui" ou "non" et non pas "erreur".
    Comment faire ?

    Voici le code à l'heure actuelle :

    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
     
    Sub Reco()
    Dim lig_dep As Integer
    Dim Msg, Style, Title, Help, Ctxt, Response, MyString
    Msg = "Souhaitez-vous vraiment établir le rapport ?"    ' Définit le message.
    Style = vbYesNo + vbCritical + vbDefaultButton2    ' Définit les boutons.
    Title = "VALIDATION "    ' Définit le titre.
    Help = "DEMO.HLP"    ' Définit le fichier d'aide.
    Ctxt = 1000    ' Définit le contexte de
                    ' la rubrique.
    ' Affiche le message.
    Response = MsgBox(Msg, Style, Title, Help, Ctxt)
    If Response = vbYes Then    ' L'utilisateur a choisi Oui.
        MyString = "Oui"    ' Effectue une action.
    Else    ' L'utilisateur a choisi Non.
        MyString = "Non"    ' Effectue une action.
    End If
    If MyString = "Oui" Then
     
            Set FeuilleReco = Sheets("A SUPP reco")
            ColonneATester = 3
            With FeuilleReco
                 For LigneEnCours = 100 To 5 Step -1
                     If .Cells(LigneEnCours, ColonneATester) = "ZOui" Then .Cells(LigneEnCours, ColonneATester).EntireRow.Delete Shift:=xlUp
                 Next LigneEnCours
            End With
            Set FeuilleReco = Nothing
        End If
     
    End Sub

    Merci par avance.

  9. #9
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par nitro95 Voir le message
    Hello,
    Avant de lancer la macro (en cliquant sur un objet), je veux qu'elle s'assure que toutes les lignes contiennent "oui" ou "non" et non pas "erreur".
    Comment faire ?
    Bonjour,

    Il faut que le nombre de cellules avec Oui et Non soit égal au nombre total de cellules de l'aire testée. Vous pourriez le faire avec une fonction Nb.SI.

    Vous déclenchez la macro s'il y a égalité.

    Cordialement.

Discussions similaires

  1. [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, 17h50
  2. supprimer une ligne avec macros
    Par czied dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 14/03/2009, 11h25
  3. suppression des lignes avec sed
    Par dngaya dans le forum Linux
    Réponses: 1
    Dernier message: 29/09/2008, 22h23
  4. supprimer ligne avec macro textbox
    Par lilou86 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 30/04/2008, 15h07
  5. suppression de ligne par macro
    Par stefano dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 08/02/2008, 15h41

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