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 :

Recherche de ligne et suppression


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Inscrit en
    Juin 2007
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 66
    Par défaut Recherche de ligne et suppression
    à tous

    j'essaie depuis peu de rechercher une valeur dans mon classeur et de la supprimer.
    La valeur est le nom d'une feuille et le contenu d'une cellule.
    La cellule recherché se trouve sur la feuille "Liste", colonne B.
    La feuille recherché se trouve dans le classeur.
    La recherche et suppression est faite via un combobox de l'userform et peut se retrouver sur n'importe quelle feuille du classeur.
    Pour la suppression de la feuille, j'ai le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    ...
     
    If Valeur = ComboBox1.Text Then
       Sheets(ComboBox1.Text).Activate
    End If
    MsgBox " Êtes-vous sûr de vouloir supprimer " & ComboBox1 & " ?"
     If vbYes Then
     Application.DisplayAlerts = False
     Sheets(ComboBox1.Text).Delete
     Application.DisplayAlerts = True
     End If
     Unload Me
    ...
    Pour la suppression de la ligne, j'ai le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    ...
     
    Dim J As Long
    Dim Plage As Range
    Set Plage = Range("B7", Range("B65536").End(xlUp))
    For J = Plage.Cells.Count To 1 Step -1
        If Plage.Cells(J).Value = ComboBox1 Then
            Plage.Cells(J).EntireRow.Delete
        End If
    Next
     
    ...
    Ces bouts de code testés distinctement fonctionnent très bien.
    j'essaye de les mettre ensemble mais j'obtient juste la suppression
    de la feuille et non de la ligne de la cellule correspondante en feuille "Liste".

    Merci de bien vouloir m'aider

  2. #2
    Expert confirmé
    Avatar de Lou Pitchoun
    Profil pro
    Inscrit en
    Février 2005
    Messages
    5 038
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2005
    Messages : 5 038
    Par défaut
    Salut,

    Tu mets bien le code de suppression de la ligne avant celui de la feuille ?

  3. #3
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Par défaut
    Bonjour,

    Moi j'aurai mis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim Vrep as Integer
    etc...
    Vrep=VbYes then etc...
    mais bon je n'y connais pas grand chose

  4. #4
    Membre confirmé
    Inscrit en
    Juin 2007
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 66
    Par défaut
    salut Lou Pitchoun

    Tu mets bien le code de suppression de la ligne avant celui de la feuille ?
    J'ai essayé comme suit mais là Erreur 91 : Variable objet ou variable bloc WITH non- definie
    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
     
    MsgBox " Êtes-vous sûr de vouloir supprimer l'article " & ComboBox1 & " ?"
     If vbYes Then
     Dim J As Long
    Dim Plage As Range
    Set Plage = Sheets("Liste articles").Range("B7", Range("B65536").End(xlUp))
    For J = Plage.Cells.Count To 1 Step -1
        If Plage.Cells(J).Value = ComboBox1 Then
            Plage.Cells(J).EntireRow.Delete
    End If
     Application.DisplayAlerts = False
     Sheets(ComboBox1.Text).Delete
     Application.DisplayAlerts = True
     
     Unload Me
    A bientôt

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2007
    Messages : 88
    Par défaut
    c'est à quelle ligne qu'ca coince ?
    et il ne manquerait pas un Next après End If ?

  6. #6
    Expert confirmé
    Avatar de Lou Pitchoun
    Profil pro
    Inscrit en
    Février 2005
    Messages
    5 038
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2005
    Messages : 5 038
    Par défaut
    Citation Envoyé par le petit nicolas Voir le message
    c'est à quelle ligne qu'ca coince ?
    et il ne manquerait pas un Next après End If ?
    Il manque effectivement un next

    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
    Dim J As Long
    Dim Plage As Range
     
    MsgBox " Êtes-vous sûr de vouloir supprimer l'article " & ComboBox1 & " ?"
    If vbYes Then
     
    Set Plage = Sheets("Liste articles").Range("B7", Range("B65536").End(xlUp))
    For J = Plage.Cells.Count To 1 Step -1
        If Plage.Cells(J).Value = ComboBox1 Then
            Plage.Cells(J).EntireRow.Delete
        End If
    Next
    Application.DisplayAlerts = False
    Sheets(ComboBox1.Text).Delete
    Application.DisplayAlerts = True
     
    Unload Me

  7. #7
    Membre confirmé
    Inscrit en
    Juin 2007
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 66
    Par défaut
    salut Lou Pitchoun

    Citation:
    Envoyé par le petit nicolas Voir le message
    c'est à quelle ligne qu'ca coince ?
    et il ne manquerait pas un Next après End If ?
    Il manque effectivement un next
    je crois que j'ai péché depuis de toujours envoyer des extrais de mon code.
    Voila le code entier que j'essaie d'exécuter en vain :

    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
    40
    41
     
    Private Sub Supprimer_Click()
    On Error GoTo Gerreur
    If ComboBox1 = "" Then
    MsgBox "Saisissez un article !", vbExclamation
    ComboBox1.SetFocus
    Exit Sub
    End If
     
    If Valeur = ComboBox1.Text Then
       Sheets(ComboBox1.Text).Activate
    End If
     
    MsgBox " Êtes-vous sûr de vouloir supprimer " & ComboBox1 & " ?", vbCritical + vbYesNoCancel + 256, "Attention"
     If vbYes Then
    Dim J As Long
    Dim Plage As Range
    Set Plage = Sheets("Liste articles").Range("B7", Range("B65536").End(xlUp))
    For J = Plage.Cells.Count To 1 Step -1
        If Plage.Cells(J).Value = ComboBox1 Then
            Plage.Cells(J).EntireRow.Delete
    End If
     Application.DisplayAlerts = False
     Sheets(ComboBox1.Text).Delete
     Application.DisplayAlerts = True
     Unload Me
     If vbCancel Then
     ComboBox1.SetFocus
     ElseIf vbNo Then
     Unload Me
     End If
    Exit Sub
    Gerreur:
    If Err.Number = 9 Then
    Beep
                    MsgBox "" & ComboBox1.Text & " n'existe pas!"
                    ComboBox1.SetFocus
    End If
    Next
    End If
    End Sub
    J'espère avoir donné plus d'information

    Le code coince à la ligne : If Plage.Cells(J).Value = ComboBox1 Then

    A bientôt

  8. #8
    Membre confirmé
    Inscrit en
    Juin 2007
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 66
    Par défaut
    salut a tout le forum

    Voilà ce que j'ai de nouveau essayé :
    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
     
    Private Sub Supprimer_Click()
    On Error GoTo Gerreur
    If ComboBox1 = "" Then
    MsgBox "Saisissez un article !", vbExclamation
    ComboBox1.SetFocus
    Exit Sub
    End If
    MsgBox " Êtes-vous sûr de vouloir supprimer l'article " & ComboBox1 & " ?", vbCritical + vbYesNoCancel + 256, "Attention"
     If vbYes Then
    Application.DisplayAlerts = False
     Sheets(ComboBox1.Text).Delete
     Application.DisplayAlerts = True
     End If
     If vbNo Then
     Unload Me
     Else
     ComboBox1.SetFocus
     End If
    Dim J As Long
    Dim Plage As Range
    Set Plage = Range("B7", Range("B65536").End(xlUp))
    For J = Plage.Cells.Count To 1 Step -1
        If Plage.Cells(J).Value = ComboBox1 Then
            Plage.Cells(J).EntireRow.Delete
        End If
        Next
     
    Exit Sub
    Gerreur:
    If Err.Number = 9 Then
    Beep
                    MsgBox "L'article " & ComboBox1.Text & " n'existe pas!"
                    ComboBox1.SetFocus
    End If
    End Sub
    ici le code fonctionne à merveille car la plage dans la quelle la ligne doit être supprimer n'est pas sur une autre feuille.

    Comment l'adapter maintenant si la plage Range("B7", Range("B65536") est sur une autre feuille du classeur.

    A bientôt

  9. #9
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Par défaut
    Une partie de cette réponse devrait pouvoir te donner des pistes.
    Principalement l'instanciation des feuilles et de ranges dans ces feuilles.
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

Discussions similaires

  1. [Batch] Recherche ligne puis suppression dans un fichier
    Par jbarreau-mainson dans le forum Scripts/Batch
    Réponses: 2
    Dernier message: 07/01/2010, 11h40
  2. [VBA-E] rechercher une ligne pour remplacer?
    Par zouille dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 31/12/2005, 10h31
  3. Rechercher une ligne vide
    Par nico-pyright(c) dans le forum Traitement d'images
    Réponses: 7
    Dernier message: 22/12/2005, 17h10
  4. Fonction de recherche de ligne...
    Par Zenol dans le forum Langage
    Réponses: 6
    Dernier message: 05/12/2005, 19h26
  5. [TDBGrid] Multisélection de lignes pour suppression
    Par littledoudou dans le forum C++Builder
    Réponses: 9
    Dernier message: 05/11/2003, 10h42

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