Probleme is not date vba

Bonjour everytout le monde,

j'ai un petit probleme je dois faire du netoyage sur une page excel et garder que toute mes lignes qui comporte
en dans ma colonne A !

donc j'ai fais ceci

I = 1
For I = 1 To numligne
controle = Cells(I, 1).Value
If Not IsDate(controle) Then
Selection.Delete Shift:=xlUp
Else
Cells(I, 3) = Cells(I, 3) & Cells(I + 1, 3)
End If


Next I

End Sub


mais lorsque je tombe sur une date sa m'efface ma ligne comme même!
ma date est au format "09-JUL-08"

merci d'avance pour votre aide

8 réponses

  1. Bonjour puis-je te proposer une solution peut etre un poil plus optimisée?

    'nettoie
    zr = "Fin de l'édition"

    Set fin = Cells.Find(zr, ActiveCell)
    numligne = fin.Row

    ii = 1
    Do

    Cells(ii, 1) = Replace(Cells(ii, 1), " ", "")
    controle = Cells(ii, 1).Value
    If IsDate(controle) = False Then
    Rows(ii).Delete
    numligne = numligne - 1
    Else
    Cells(ii, 3) = Cells(ii, 3) & " " & Cells(ii + 1, 3)
    ii = ii + 1
    End If

    Loop While ii < numligne

    End Sub
    1. Enfaite je parlais des enlever les espace dans la feuille de calcule ou dans la variable.
      Et si tu ne veux pas faire deux boucles il faut que tu commences ta boucle en bas de ta feuille
      A ++
      1. voilà mon code

        'nettoie
        zr = "Fin de l'édition"
        
        Set fin = Cells.Find(zr, ActiveCell)
        numligne = fin.Row
        
        nbdate = 0
        
        For I = 1 To numligne
        Cells(I, 1) = Replace(Cells(I, 1), " ", "")
        controle = Cells(I, 1).Value
        Cells(I, 1).Select
        If IsDate(controle) = True Then
        nbdate = nbdate + 1
        End If
        Next I
        
        For I = 1 To nbdate
        'Cells(I, 1) = Replace(Cells(I, 1), " ", "")
        controle = Cells(I, 1).Value
        Cells(I, 1).Select
        If IsDate(controle) = False Then
        Rows(I).Delete
        I = I - 1
        Else
        Cells(I, 3) = Cells(I, 3) & " " & Cells(I + 1, 3)
        End If
        
        
        Next I
        
        End Sub

        ma premiere boucle me sert à ne pas avoir de boucle qui tourne dans l'infini vu que j'efface des lignes

        parcontre je vois pas ce que tu veus dire quand à garder mes espaces
        dans mon cas je voulais justes les supprimer pour que ma fonction If IsDate(controle) = False fonctionne correctement!
        mais tu peus toujours me le dire ! ca peut toujours servir
        en tout cas je te remercis ! je repasserais si j'ai un probleme
        1. c'étais juste un exemple

          zr = "Fin de l'édition"

          Set fin = Cells.Find(zr, ActiveCell)
          numligne = fin.Row

          I = 1
          For I = 1 To numligne
          Cells(I, 1). = Replace(Cells(I, 1), " ", "")
          controle = Cells(I, 1).Value
          If IsDate(controle) = False Then
          Rows(I).Delete
          I = I - 1
          Else
          Cells(I, 3) = Cells(I, 3) & " " & Cells(I + 1, 3)
          End If

          Next I

          par contre je ne sais pas si tu veux garder tes espaces dans les cellules?
          1. merci pour ta formule Range("A1") = Replace(Range("A1"), " ", "")
            mais il me faudrais plutot un range de ma ligne actuelle merciii
            1. daccord je vais essayer
              j'ai remarquer qu'il manquer un I = I - 1 lorsque j'efface une ligne sinon je la "saute"

              zr = "Fin de l'édition"
              
              Set fin = Cells.Find(zr, ActiveCell)
              numligne = fin.Row
              
              I = 1
              For I = 1 To numligne
              controle = Cells(I, 1).Value
              Cells(I, 1).Select
              Range("A1") = Replace(Range("A1"), " ", "")
              If IsDate(controle) = False Then
              Rows(I).Delete
              I = I - 1
              Else
              Cells(I, 3) = Cells(I, 3) & " " & Cells(I + 1, 3)
              End If
              
              
              Next I


              un autre petit probleme comme tu peus voir
              ma ligne de fin de mon document excel et la ligne ou je trouve "fin d'édition"
              mais comme dans mon traitement j'efface mes ligne et je fais un retours en arrierre lorsque je trouve
              par exemple une cellulle vide
              sa me fait donc une boucle infini xD !
              peut etre que je dois faire un compteur lorsque je rencontre une date jusqua la ligne "Fin d'édition"

              encore merci je donne de suite des nouvelles
              1. Il faut juste mettre ce code avant ta verification de date ou pas date
                Range("A1") = Replace(Range("A1"), " ", "")
                1. ce code va supprimé les lignes qui n'ont pas de date dans la colonne A

                  i = 1
                  For i = 1 To numligne
                  controle = Cells(i, 1).Value
                  If IsDate(controle) = False Then
                  Rows(i).Delete
                  Else
                  Cells(i, 3) = Cells(i, 3) & Cells(i + 1, 3)
                  End If
                  Next i

                  ce code va effacé ligne qui n'ont pas de date dans la colonne A
                  i = 1
                  For i = 1 To numligne
                  controle = Cells(i, 1).Value
                  If IsDate(controle) = False Then
                  Rows(i).Clear
                  Else
                  Cells(i, 3) = Cells(i, 3) & Cells(i + 1, 3)
                  End If
                  Next i
                  1. oui je venais aussi de me pencher sur le problem ou j'effacer mes lignes :)
                    j'ai trouver le probleme pourquoi il ne considére pas mes dates en tant que date
                    à cause d' un ESPACE !
                    je me retrouve avec " 09-JUL-08" et non "09-JUL-08"
                    faut que je trouve le moyen d'automatiser en vba pour m'enlever ce facheus espace

                    si vous avez une idée je suis prenneur :)

                    merci