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 ligne + Mise en forme conditionnelle


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 20
    Points : 9
    Points
    9
    Par défaut Suppression ligne + Mise en forme conditionnelle
    Bonjour j'aurais besoin d'un coup de pouce sur le problème suivant:

    dans un liste de logiciel dans la colonne A, j'aimerais supprimer les lignes qui ont "Mise à jour de sécurité" ou "Correctif Windows XP"

    ensuite toujours dans cette meme colonne A, trouver des logiciels identifier par example dans la colonne D.

    je vais également répéter cette opération dans d'autre feuilles du meme classeur.

    merci a l'avance pour votre aide

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 20
    Points : 9
    Points
    9
    Par défaut d'autre information....
    la fonction suivante semble bien mais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub Supprimerligne()
     
    Dim a As Long
    Dim b As Long
     
    a = Range("A65536").End(xlUp).Row
    For b = a To 1 Step -1
        If Cells(b, 1).Value = "Correctif*" Then
            Rows(b).Delete
        End If
    Next b
    End Sub
    les lignes a supprimer sont:
    Correctif Windows XP - KB890859
    Correctif Windows XP - KB891781

    et le parametre "correctif*" ne fonctionne pas

    Merci

  3. #3
    Membre chevronné Avatar de wilfried_42
    Homme Profil pro
    Auto-entrepreneur
    Inscrit en
    Novembre 2006
    Messages
    1 427
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Auto-entrepreneur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 427
    Points : 1 900
    Points
    1 900
    Par défaut
    Bonjour

    en effet, * est pris comme un caractere normal : à essayer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      If Left(Cells(b, 1),9).Value = "Correctif" Then

  4. #4
    Candidat au Club
    Homme Profil pro
    Responsable Suppot Informatique en milieu industriel
    Inscrit en
    Février 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Responsable Suppot Informatique en milieu industriel
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2009
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Il est aussi possible d'essayer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
       If Left(Cells(b, 1),9).Value like "Correctif" Then

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    592
    Détails du profil
    Informations personnelles :
    Âge : 74
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 592
    Points : 730
    Points
    730
    Par défaut
    Pour chercher une chaîne de caractères à l'intérieur d'une autre, il faut utiliser Pour les détails voir l'aide en ligne.

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 20
    Points : 9
    Points
    9
    Par défaut Objet requis
    Merci pour vos reponse mais je n'avance pas trop

    j'ai un erreur objet requis

    voici le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub Supprimerligne()
     
    Dim a As Long
    Dim b As Long
     
    a = Range("A65536").End(xlUp).Row
    For b = a To 1 Step -1
        If Left(Cells(b, 1), 9).Value Like "*Correctif*" Then
            Rows(b).Delete
        End If
    Next b
    End Sub

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    592
    Détails du profil
    Informations personnelles :
    Âge : 74
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 592
    Points : 730
    Points
    730
    Par défaut
    Objet requis sur quelle ligne ?
    Le programme a-t-il supprimé quelques lignes?
    Se plante t-il à la première suppression ?

    des détails SVP

    En exécution pas à pas où le programme se plante t-il ?

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 20
    Points : 9
    Points
    9
    Par défaut 424 objet requis
    Merci beaucoup de votre aide, vous êtes plus rapide a répondre que je consulte les messages


    la macro ne se lance pas, dès que je clique sur éxécuter sa donne
    Erreur exécution 424 objet requis

    en pas a pas il donne l'erreur carrément sur la premier ligne du SUB Supprimerligne()

    Merci encore

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    592
    Détails du profil
    Informations personnelles :
    Âge : 74
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 592
    Points : 730
    Points
    730
    Par défaut
    N'y aurait-il pas un call supprimerligne avec un argument quelque part dans ton code ?

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    592
    Détails du profil
    Informations personnelles :
    Âge : 74
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 592
    Points : 730
    Points
    730
    Par défaut
    l'erreur provient du .value

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Left(Cells(b, 1), 9).Value Like "*Correctif*" Then

    Il faut mettre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Left(Cells(b, 1), 9) Like "*Correctif*" Then
    Par contre il subsiste un problème potentiel car tu extrait les 9 caractères de gauche si Correctif n'est pas bien cadré la ligne ne sera pas supprimée.
    Je te conseille donc

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Cells(b, 1) Like "*Correctif*" Then

  11. #11
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 20
    Points : 9
    Points
    9
    Par défaut Excellent Merci
    Merci voila le code final utilisé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub Supprimerligne()
     
    Dim a As Long
    Dim b As Long
     
    a = Range("A65536").End(xlUp).Row
    For b = a To 1 Step -1
        If Cells(b, 1) Like "*Correctif*" Then
            Rows(b).Delete
        End If
    Next b
    End Sub
    encore merci

  12. #12
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 20
    Points : 9
    Points
    9
    Par défaut et si jamais je voulais ajouter un deuxieme criteres
    je voudrais supprimer la ligne si la ligne contient Correctif ou mise

    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
    Sub Supprimerligne()
     
    Dim a As Long
    Dim b As Long
    Dim c As Long
     
    a = Range("A65536").End(xlUp).Row
     
    For b = a To 1 Step -1
        If Cells(b, 1) Like "*Correctif*" And "*Mise*" Then
            Rows(b).Delete
        End If
    Next b
     
    End Sub
    encore merci

  13. #13
    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 : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Ca devrait ressembler à ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Cells(b, 1) Like "*Correctif*" Or Cells(b, 1) Like "*Mise*" Then

  14. #14
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 20
    Points : 9
    Points
    9
    Par défaut sa marche mais c'est long
    Excellent merci

    voici mon code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        a = Range("A65536").End(xlUp).Row
     
        For b = a To 1 Step -1
            If Cells(b, 1) Like "*Mise*" Or Cells(b, 1) Like "*Correctif*" Or Cells(b, 1) Like "*Hotfix*" Or Cells(b, 1) Like "*Registry Name*" Then
            Rows(b).Delete
        End If
        Next b
    le problème c'est que sa prend entre 3 et 4 minutes pour faire le menage dans environ 300 lignes

    Merci Beaucoup très apprécié

  15. #15
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    592
    Détails du profil
    Informations personnelles :
    Âge : 74
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 592
    Points : 730
    Points
    730
    Par défaut
    3 minutes c'est bougrement long, cela fait 1 seconde par ligne.

    Je fais à peut près la même chose dans une de mes applications, sur un fichier de 4000 lignes dans lequel 1000 lignes sont à supprimer, il faut 20 à 30 secondes.

    Si tu as un peu de temps essaie donc la version que je t'avais proposée avec la fonction instr.

    A+

  16. #16
    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 : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Une telle lenteur sent le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.Calculation = xlManual
    en début de procédure et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.Calculation = xlAutomatic
    en fin.

Discussions similaires

  1. [AC-2007] Mise en forme conditionnelle pour les lignes entières
    Par Oliv'83 dans le forum IHM
    Réponses: 8
    Dernier message: 25/08/2017, 14h24
  2. [AC-2007] Mise en forme conditionnelle ligne entière sous-formulaire
    Par lio33 dans le forum IHM
    Réponses: 2
    Dernier message: 11/07/2011, 12h58
  3. [XL-2007] Mise en forme conditionnelle et fonction LIGNE()
    Par lennelei dans le forum Excel
    Réponses: 3
    Dernier message: 21/04/2011, 17h08
  4. [XL-2010] Mise en forme conditionnelle par ligne
    Par sbricout dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 21/02/2011, 17h51
  5. [AC-2003] Mise en forme conditionnelle ligne désactivée
    Par maringot dans le forum IHM
    Réponses: 3
    Dernier message: 14/06/2010, 09h37

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