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 suppresion de lignes sur condition


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut vba suppresion de lignes sur condition
    Bonjour
    Je souhaite supprimer toutes les lignes d'un fichier Excel qui ont dans leur premiere cellule une chaine de caractères qui commence par "ois de" et dont la suite change selon la ligne. Pourriez vous svp m'aider à trouver un code vba pour pouvoir réaliser cette action?

    Par exemple jutilise 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
    Sub sipprlg()
     
     
        Dim M As Integer
        Range("A1").Select
        For M = 1 To 20000
        If ActiveCell.Value = "mois de juin" Then
        ActiveCell.EntireRow.Select
        Selection.Delete Shift:=xlUp
       Else: ActiveCell.Offset(1, 0).Select
       End If
       Next M
     
     End Sub
    Sauf que le probleme chaque mois ma conditin de suppression change, je veux donc faire un code qui me supprime toutes les lignes qui cmmencet par "mois de".

    Merci beaucoup
    Dernière modification par zazaraignée ; 08/07/2007 à 20h19. Motif: Ajout des balises Code, c'est le bouton #

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

    Vous pouvez essayer 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
    17
    18
    19
    20
    21
    Sub supprlg()
    Dim c As Byte
    Dim M As Integer, dl As Long
    Dim txt As String
    'recherche de la dernière ligne
    dl = Range("A65536").End(xlUp).Row
    'N° de la colonne de donnée (modifier éventuellement)
    c = 1
     
    For M = 1 To dl
    txt = Cells(M, c)
    txt = Left(txt, 7)
    If txt = "Mois de" Then
    Rows(M).Select
    Selection.Delete Shift:=xlUp
    M = M - 1
    dl = dl - 1
    End If
    Next M
     
    End Sub
    Amicalement.

  3. #3
    Invité
    Invité(e)
    Par défaut
    merci bcp mais je n'arrive pas a faire marcher le code, quand je le lance il ne se asse rien...

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 567
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 567
    Par défaut
    pour le code de jacque_jean, peut etre qu'il ne fonctionne pas parce que t'es "mois de " n'ont pas la même casse
    essaye de remplacer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If txt = "Mois de" Then

    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If txt = "mois de" Then

  5. #5
    Membre émérite

    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Ardèche (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 652
    Par défaut
    Bonjour à tous,

    Pour le fun, une autre solution rapide:
    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 supprimer_avec_condition()
     
    Application.screenupdating=false
     
    On Error Resume Next
    lig = Columns(1).Find("mois de", Range("A65536"), , xlPart).Row
    Rows(lig).Delete
    If Err.Number > 0 Then: End
    on error goto 0
     
    supprimer_avec_condition
     
    End Sub
    Pourquoi "pour le fun"?
    1/ VBA n'aime pas les proc récursives... sur mon ordi, VBA m'indique une saturation des piles à quelques 1700 lignes répondant à la condition ("mois de")
    2/ l'utilisation de "END" permet un gain de temps (pas de dépilage) mais clot toutes les macros en cours: on ne peut donc pas l'utiliser comme sous-macro ou comme lignes à l'intérieur d'une macro...

    Je n'ai pas vérifié la remarque d'Asimbald...je vais regarder

    Bon dimanche à tous

    edit: C'est insensible à la casse; j'ai rajouté le blocage d'écran

  6. #6
    Invité
    Invité(e)
    Par défaut Merci!!!
    merci beaucoup pour voter aide, mon problème est résolu. En faitn le premier code archait mais il fallait marquer mois de en majuscules...des fois VBA bloque sur pas grand chose...enfin merci beucoup à tous

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

Discussions similaires

  1. Problème VBA : suppression de lignes sous conditions multiples
    Par mia73 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 17/10/2012, 19h42
  2. Excel VBA - Supprimer une ligne sous condition
    Par freygeo dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 13/08/2012, 16h55
  3. VBA - Pb Suppression lignes sur plage filtrée
    Par oracle7556 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 01/06/2010, 21h54
  4. Suppression ligne sur condition
    Par cchampion2fr dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 11/09/2008, 15h39
  5. Masquer des lignes sur condition
    Par marc56 dans le forum Macros et VBA Excel
    Réponses: 25
    Dernier message: 06/03/2008, 02h11

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