VBA Suppr lignes si pas date

Résolu
Nathalie -  
nathjeuh22 Messages postés 6 Statut Membre -
Bonjour tout le monde

Je suis débutante en VBA et aurai (vraiment) besoin de votre aide. Je vous explique en bref mon fichier:

J'ai un onglet Excel, qui est divisé en 2 parties. Partie 1 de "A9:D200" et partie 2 de "E9:H200". Dans la 4ième colonne de chaque partie (colonnes D et H) il y des cellules contenant des dates, d'autres contenant des mots, ... Je voudrai que la macro supprime de "A:D" si il n'y a pas de date dans la colonne D de cette ligne. Et que la macro supprime de "E:H" si il n'y pas de date dans la colonne H.

Mais attention, car il est possible que, par exemple, je n'ai pas de date dans "D20", mais bien dans "H20". Et je ne voudrai pas qu'il me supprime "E20:H20".

J'espère que quelqu'un pourra m'aider !

Déjà un grand merci,
Nathalie

3 réponses

  1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    Bonjour,
    Voici un code possible.
    !!!!!!!TESTE LE SUR UNE COPIE DE TON CLASSEUR!!!!!!!!!!!!!
    !!!!!!!!! PAS SUR L'ORIGINAL !!!!!!!!!!!!!!!
    Sub SupprSiPasDate() 
    Dim Lig As Long, DrLig As Long 
    'Je suppose que la colonne A est la "plus longue" 
    'sinon changer A dans la ligne ci dessous 
    DrLig = Range("A" & Rows.Count).End(xlUp).Row 
    For Lig = DrLig To 1 Step -1 
        If IsDate(Cells(Lig, 4)) = False Then 
            Range(Cells(Lig, 1), Cells(Lig, 4)).Delete Shift:=xlUp 
        End If 
        If IsDate(Cells(Lig, 8)) = False Then 
            Range(Cells(Lig, 5), Cells(Lig, 8)).Delete Shift:=xlUp 
        End If 
    Next 
    End Sub

    Cordialement,
    Franck P
    0
  2. Nathalie
     
    Bonjour

    Merci pour votre réponse !! Mais malheureusement ca ne functionne pas ... Je l'ai testé, et qlq chose functionne, mais ca dure et ce dure et ca me bloque tout.

    J'ai une macro qui me supprime des lignes, mais il en supprime trop.

    Range("D2500:D9").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
    Range("D2500:D9").SpecialCells(xlCellTypeConstants, _ xlTextValues).EntireRow.Delete

    Merci!
    0
    1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      Bonjour,
      Combien de lignes dois tu traiter? (je pensais naïvement à 200 au départ)
      Comment utilises tu le code que je t'ai donné???
      0
  3. Nathalie
     
    Pijaku! Je n'avai pas vu que c'était vous! Vous m'avez déjà aidé sur une question il y a qlq mois d'ici!! Et ca functionne toujours super bien ;)

    Pour votre macro, je l'ai tout simplement testé comme vous me l'avez donné, sur mes données.
    Je n'ai rien ajouté / supprimé.

    Pour mes données, elles varient. Je compte jusqu'à 2500 lignes. Mais il y a defois une dizaine de lignes avec données, puis 5 sans données, etc ...

    J'ai essayé de faire une macro qui supprime les lignes si elle ne sont pas au format #dd/mm/aaaa# mais ca n'a pas functionné.
    0
    1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      Peut être pourrais tu me passer ton fichier? Par MP?
      0
    2. Nathalie
       
      C'est qoui MP?
      0
    3. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      Messagerie Privée... Va fouiller dans mon profil, en cliquant sur mon pseudo...
      Faut peut être être inscrit... Sinon dis le.
      0
    4. nathjeuh22 Messages postés 6 Statut Membre
       
      et voila ;) jte fait mp ds 2 sec
      0
    5. nathjeuh22 Messages postés 6 Statut Membre
       
      pffff on ne peut pas envoyer de fichier par mp ... je te l'envoie sur ton mail privé qui est affiché sur ton profil?
      0