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

Excel Discussion :

Tester une cellule pour detruire la ligne


Sujet :

Excel

  1. #1
    Membre régulier
    Inscrit en
    Mars 2008
    Messages
    296
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 296
    Points : 103
    Points
    103
    Par défaut Tester une cellule pour detruire la ligne
    Bonjour,

    je viens creer un bouton qui permet d'executer ma macro

    je voudrais tester chaque cellule de la colonne A
    voici le contenu des cellule A

    PDA : XXX
    TRE : YYY
    PDA : ZZZ
    AZE : XXX
    si le contenu commence par "PDA" je voudrais suprimer la ligne

    j'ai commencer par ceci mais je suis débutant sur excel


    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
    Private Sub CommandButton1_Click()
     
    Dim i As Integer
    Dim contenu As String
     
    For i = 1 To 100
     
        contenu = cell(A,i)
     
        if XXXX
           Worksheets("Feuil1").Rows(i).Delete
     
    Next i
     
    End Sub
    merci

  2. #2
    Membre émérite Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Points : 2 662
    Points
    2 662
    Par défaut
    Bonjour,
    L'idée est bonne, voici les quelques adaptations à faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub CommandButton1_Click()
     
    Dim i As Integer
    Dim contenu As String
     
    For i = 1 To 100 'Tu peux si le nombre de ligne n'est pas toujours 100 le rendre dynamique
     
        contenu = Left(Cells(i, 1).Value, 3) 'Tu avais une erreur dans cells, cells fonctionne en nombre en sachant que c'est ligne/colonne
        If contenu = "PDA" Then Worksheets("Feuil1").Rows(i).Delete
     
    Next i
     
    End Sub
    Tu peux faire encore plus court et ajouter le nombre de ligne en variable => dynamique

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub CommandButton1_Click()
     
    Dim i As Integer
    Dim NbLigne As Integer
     
    NbLigne = celss(Range("a:a").Rows.Count, 1).End(xlUp).Row
     
    For i = 1 To NbLigne 'NbLigne récupère le numérode la dernière ligne remplie de la colonne A
     
        If Left(Cells(i, 1).Value, 3) = "PDA" Then Worksheets("Feuil1").Rows(i).Delete
     
    Next i
     
    End Sub
    Bonne continuation

  3. #3
    Membre régulier
    Inscrit en
    Mars 2008
    Messages
    296
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 296
    Points : 103
    Points
    103
    Par défaut
    Cela fonctionne mais lorsque j'ai 2 PDA qui ce suivent il y a 1 ligne qui ce supprime???

    merci

  4. #4
    Membre émérite Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Points : 2 662
    Points
    2 662
    Par défaut
    Re,
    Désolé, je suis pas bien réveillé c'est une erreur grossière de ma part
    En effet quand on supprime une ligne on "décalle" la boucle, le mieux est alors de commencer par le bas...donc:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub CommandButton1_Click()
     
    Dim i As Integer
    Dim contenu As String
     
    For i = 100 To 1 step-1 'En commencant par le bas avec step-1 on evite le décallage.
     
        contenu = Left(Cells(i, 1).Value, 3) 'Tu avais une erreur dans cells, cells fonctionne en nombre en sachant que c'est ligne/colonne
        If contenu = "PDA" Then Worksheets("Feuil1").Rows(i).Delete
     
    Next i
     
    End Sub
    Même principe si tu choisi la version "dynamique", tu auras alors

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub CommandButton1_Click()
     
    Dim i As Integer
    Dim NbLigne As Integer
     
    NbLigne = Cells(Range("a:a").Rows.Count, 1).End(xlUp).Row
     
    For i = NbLigne To 1 Step -1
     
        If Left(Cells(i, 1).Value, 3) = "PDA" Then Worksheets("sheet1").Rows(i).Delete
     
    Next i
     
    End Sub
    A+

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 20/03/2014, 20h51
  2. vba écrire une cellule pour chaque ligne écrite
    Par Chris171717 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 14/03/2013, 11h53
  3. tester le remplissage couleur d'une cellule pour le reproduire
    Par kyros21 dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 18/11/2011, 09h46
  4. Réponses: 9
    Dernier message: 09/03/2007, 20h44
  5. [Excel] fonction SOMME.SI avec une cellule pour critère
    Par repié dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 15/03/2006, 17h39

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