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 :

VBA suppression de ligne d'un tableau comportant une valeur spécifique


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Contrôle de gestion
    Inscrit en
    Février 2014
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Contrôle de gestion

    Informations forums :
    Inscription : Février 2014
    Messages : 19
    Points : 9
    Points
    9
    Par défaut VBA suppression de ligne d'un tableau comportant une valeur spécifique
    Bonjour,

    J'ai un code VBA que je souhaitais utiliser pour supprimer une ou plusieurs lignes d'un tableau comportant une valeur spécifique (voir tableau que je joins) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub sup_ligne_tableau()
    Dim cellule As Object
    Sheets("Feuil4").Select
    Range("a2").Select
    Range(Selection, Selection.End(xlDown)).Select
    For Each cellule In Selection
    If cellule = "A" Then
    cellule.EntireRow.Delete 'detruit toute les cellules de la ligne
    End If
    Next
    End Sub
    Mon souci est le suivant : Cette macro fonctionne bien tant que la valeur "A" n'est pas présente plusieurs fois à la fin de ma liste, auquel cas, elle n'est pas supprimée. J'espère que quelqu'un saura m'expliquer pourquoi et me donner une solution qui évite ce problème. D'avance merci. Cordialement.
    Fichiers attachés Fichiers attachés

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Essayez 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
    Sub Sup_Ligne_Tableau()
     
    Dim I As Long
    Dim DerniereLigne As Long
    Dim Sh As Worksheet
     
        Set Sh = Sheets("Feuil4")
        DerniereLigne = Sh.Cells(Sh.Rows.Count, 1).End(xlUp).Row
     
        For I = DerniereLigne To 2 Step -1
            If Sh.Cells(I, 1) = "A" Then Sh.Cells(I, 1).EntireRow.Delete
        Next I
     
        Set Sh = Nothing
     
    End Sub
    Cordialement.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Contrôle de gestion
    Inscrit en
    Février 2014
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Contrôle de gestion

    Informations forums :
    Inscription : Février 2014
    Messages : 19
    Points : 9
    Points
    9
    Par défaut
    Merci, cela fonctionne. Pouvez vous SVP m'expliquer le bug dans mon code ?

    D'avance merci.


  4. #4
    Invité
    Invité(e)
    Par défaut
    Au fur et à mesure de la suppression de vos lignes, votre zone sélectionnée est aussi modifiée. Comme vous commencez par le début la liste, il arrive un moment où vos cellules "A" sont hors zone sélectionnée. Pour régler ce problème, lorsque vous voulez supprimer des lignes ou des cellules, il faut toujours commencer par la fin.

    Cordialement.
    Dernière modification par AlainTech ; 18/08/2018 à 16h08. Motif: Suppression de la citation

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Contrôle de gestion
    Inscrit en
    Février 2014
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Contrôle de gestion

    Informations forums :
    Inscription : Février 2014
    Messages : 19
    Points : 9
    Points
    9
    Par défaut Question complémentaire
    Bonjour,

    Je vois que nous avons ou avons eu un employeur commun !

    Si je peux me permettre, pourriez vous m'indiquer une méthode qui, à l'aide d'un tableau existant, me permettre de modifier la valeur d'une cellule, en fonction de la valeur contenue dans une autre cellule, ligne à ligne ?

    D'avance merci.

    Cordialement.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par PSAIMOND Voir le message
    Si je peux me permettre, pourriez vous m'indiquer une méthode qui, à l'aide d'un tableau existant, me permettre de modifier la valeur d'une cellule, en fonction de la valeur contenue dans une autre cellule, ligne à ligne ?
    Bonjour,

    Il faudrait expliquer ce que vous souhaitez faire à l'aide d'un exemple.

    Cordialement.

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Contrôle de gestion
    Inscrit en
    Février 2014
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Contrôle de gestion

    Informations forums :
    Inscription : Février 2014
    Messages : 19
    Points : 9
    Points
    9
    Par défaut Remplacement d'un valeur de cellule en fonction de la valeur contenue dans une autre cellule de la même ligne
    Bonjour,

    Pour être plus précis sur ma demande, je vous joins un tableau exemple de ma recherche qui est :

    - sur toutes les ligne d'un tableau, je teste la valeur d'une cellule.
    - si cette cellule à une valeur donnée, alors, je mets à jour une autre cellule de la même ligne

    J'espère avoir été plus clair.

    Cordialement.

    Philippe
    Images attachées Images attachées  
    Fichiers attachés Fichiers attachés

  8. #8
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par PSAIMOND Voir le message
    - sur toutes les ligne d'un tableau, je teste la valeur d'une cellule.
    - si cette cellule à une valeur donnée, alors, je mets à jour une autre cellule de la même ligne
    Bonjour,


    Une solution possible :

    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
    Option Explicit
     
    Sub RemplacerValeur()
     
    Dim Sh As Worksheet
     
    Dim LigneEnCours As Long
    Dim DerniereLigne As Long
    Dim ColonneTestee As Long
     
        Set Sh = Sheets("Feuil1")
     
        ColonneTestee = 3
        DerniereLigne = Sh.Cells(Sh.Rows.Count, ColonneTestee).End(xlUp).Row
     
        For LigneEnCours = 1 To DerniereLigne
            If CStr(Mid(Sh.Cells(LigneEnCours, ColonneTestee), 2, 3)) = "326" Then Sh.Cells(LigneEnCours, 1) = "X"
        Next LigneEnCours
     
        Set Sh = Nothing
     
    End Sub
    Cordialement.

Discussions similaires

  1. Réponses: 0
    Dernier message: 03/03/2014, 23h31
  2. Code vba pour la suppression des lignes d'un tableau excel
    Par yosra_jemai dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 16/04/2013, 09h11
  3. Réponses: 5
    Dernier message: 10/11/2006, 11h00
  4. [Tableaux] Suppression de lignes dans un tableau
    Par lodan dans le forum Langage
    Réponses: 9
    Dernier message: 15/09/2006, 20h08
  5. [Word] Suppression des lignes d'un tableau
    Par sat478 dans le forum VBA Word
    Réponses: 2
    Dernier message: 06/09/2006, 14h22

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