Probléme macro ...

Résolu
Bonjour,

Voila la macro qui pose probléme :
Sub essaiee()
Dim date_actuelle As Date
Dim contenu As Date
Dim MaDate As Date
Dim aa As Double

contenu = "14/05/2008 6:50"
For lig = 7 To 6 Step -1
    
    If Cells(aa, 12) And DateDiff("n", contenu, MaDate) <> 0 Then 'CETTE LIGNE POSE UN PROBLEME POUR EXCEL !!
         Rows(aa).Delete
    End If
Next aa

End Sub


j'ai donc essayé ce code pour vérifier si se n'était pas un probléme de date :
Sub essaiee_marche()
Dim date_actuelle As Date
Dim contenu As Date
Dim MaDate As Date

contenu = "14/05/2008 6:50"
       MaDate = CDate(Cells(6, 12).Value)
    If DateDiff("n", contenu, MaDate) <> 0 Then
        Rows(6).Delete
        Cells(1, 14).Value = "caaa marche !"
    End If

End Sub


Ce code fonctionne donc le probléme ne vient pas d'un probléme de format date ...

Merci beaucoup !!! pour votre aide
Configuration: Windows XP
Internet Explorer 7.0

11 réponses

  1. Contributeur
    Mais avec la ligne que tu ajoute tu peu supprimé un If
        For lig = 59 To 54 Step -1
            If Cells(lig, 12) <> "" And Cells(lig, 12) <> cas  Then
                     If DateDiff("n", contenu, CDate(Cells(lig, 12).Value)) <> 0 Then
                           Rows(lig).Delete
                    End If
            End If
        Next lig

    Et encore..
    Si ta colonne 12 est configurée en date CDate n'est pas nécessaire
    1. OK merci de ta correction lermite22

      Voici la macro finale .. :
      Sub essaiee2_essai()
      Dim date_actuelle As Date
      Dim contenu As Date
      Dim MaDate As Date
      Dim lig As Double
      Dim n_turbine As Integer
      Dim cas As String
      
      n_turbine = 1
      cas = " Te: Te" & n_turbine & " ("
      
      contenu = "11/05/2008 6:50:41"
          For lig = 59 To 54 Step -1
              If Cells(lig, 12) <> "" Then
                  If Cells(lig, 12) <> cas Then
                      If DateDiff("n", contenu, CDate(Cells(lig, 12).Value)) <> 0 Then
                             Rows(lig).Delete
                      End If
                  End If
              End If
          Next lig
      
      End Sub
      

      Comme il y avait une chaine de caractére et que je ne trouvé pas d'expression en VB pour désigner une chaine de caractére j'ai alourdi le prog. en ajoutant 2 variable de plus. ^^

      Merci
      Amicalement
      a +
      1. Contributeur
        Sub essaiee2()
        Dim date_actuelle As Date
        Dim contenu As Date
        Dim MaDate As Date
        Dim lig As Double
        
        contenu = "11/05/2008 6:50:41"
            For lig = 76 To 75 Step -1
                if Cells(lig, 12) <>"" then
                    f DateDiff("n", contenu, CDate(Cells(lig, 12).Value)) <> 0 Then
                           Rows(lig).Delete
                    End If
                end if
            Next lig
        
        End Sub

        obligé de tester AVANT sinon plantage
        A+
        1. Yep C encore moi ( Youhouuu ^^)

          Donc en faite la macro ci dessus que j ai donné en 7, fonctionne correctement lorsque la cellule contient une date ( Normale ..)

          quelques précisions: En faite ma colone L donc > Cells(...,12) < est en format date c.a.d. que TOUTES les cellules sont en format Date.

          Le probléme est qu'en faite certaine cellules (rappel: qui sont en format Date!) sont vide donc =>"" ou contiennent des lettres

          Donc voici le code qui aurait du survolé ce probléme :
          Sub essaiee2()
          Dim date_actuelle As Date
          Dim contenu As Date
          Dim MaDate As Date
          Dim lig As Double
          
          contenu = "11/05/2008 6:50:41"
              For lig = 76 To 75 Step -1
              
                  If DateDiff("n", contenu, CDate(Cells(lig, 12).Value)) <> 0 And Cells(lig, 12).Value <> vbNullString Then
                         Rows(lig).Delete
                  End If
              Next lig
          
          End Sub
          

          Ce code fonctionne bien sur les cellules avec les Date Mais losqu'il s'agit de cellule vide ou centenant des lettres la macro ne se compile pas.

          Si quelqu'un aurai la solution tant mieux et merci !

          Sinon j'utiliserai plusieurs boucles FOR qui surchargeraient mon prog. :(

          ++ les gars !
          1. C'est bon j'ai essayé un mélange de code qui me paraissai correct et sa m'A L'AIR de FONCTIONNER correctement !!!

            Voici le bout de code :
            Sub essaiee2()
            Dim date_actuelle As Date
            Dim contenu As Date
            Dim MaDate As Date
            Dim lig As Double
            
            contenu = "14/05/2008 6:50:41"
                For lig = 8 To 7 Step -1
                
                    If DateDiff("n", contenu, CDate(Cells(lig, 12).Value)) > 0 Then
                           Rows(lig).Delete
                    End If
                Next lig
            
            End Sub
            


            Reste plus qu'à faire les tests !!

            Merci FoRuM !
            +
            1. Contributeur
              OK, remet ta variable...puisque tu dit que ta 2èm solution fonctionne
                  For lig = 8 To 7 Step -1
                      MaDate = CDate(Cells(lig, 12).Value)
              
                      If Cells(lig, 12) And DateDiff("n", contenu,MaDate) <> 0 Then
                             Rows(lig).Delete
                      End If
                  Next lig
              1. Oué en faite t'as raison Lermite la variable MaDate correspond au contenue de la cellule active!
                J'ai essayé ton code :
                Sub essaiee2()
                Dim date_actuelle As Date
                Dim contenu As Date
                Dim MaDate As Date
                Dim lig As Double
                
                contenu = "14/05/2008 6:50:41"
                    For lig = 8 To 7 Step -1
                    
                        If Cells(lig, 12) And DateDiff("n", contenu, CDate(Cells(lig, 12).Value)) <> 0 Then
                               Rows(lig).Delete
                        End If
                    Next lig
                
                End Sub
                


                Mais EXcel me dit tjrs qu'il y a un probléme sur la ligne
                If Cells(lig, 12) And DateDiff("n", contenu, CDate(Cells(lig, 12).Value)) <> 0 en me disant "erreur 13 incompatibilté de type"
                Ce probléme réside t-il du contenue de la cellule ? (bien qu'on est forcée en + la cellule en Date)..

                +
                1. bonjour,

                      If Cells(lig, 12).Value And DateDiff("n", contenu, MaDate) <> 0 Then


                  A+.
                  1. oups excusez moi en faite lig=aa et il manque une ligne en plus ......
                    Jvais vous donnez le code texto !!! ca sera + simple !

                    Sub essaiee()
                    
                    Dim contenu As Date
                    Dim MaDate As Date
                    Dim lig As Double
                    
                    contenu = "14/05/2008 6:50"
                    For lig = 7 To 6 Step -1
                        MaDate = CDate(Cells(lig, 12).Value)
                        If Cells(lig, 12) And DateDiff("n", contenu, MaDate) <> 0 Then
                            
                             Rows(lig).Delete
                        End If
                    Next lig
                    
                    End Sub
                    
                    1. Contributeur
                      Bonjour,
                      ca provient de ta boucle et de la variable aa

                      Sub essaiee()
                      Dim date_actuelle As Date
                      Dim contenu As Date
                      Dim MaDate As Date
                      Dim aa As Double
                      
                      contenu = "14/05/2008 6:50"
                          For lig = 7 To 6 Step -1
                          
                              If Cells(lig, 12) And DateDiff("n", contenu, CDate(Cells(lig, 12).Value)) <> 0 Then 
                                     Rows(lig).Delete
                              End If
                          Next lig
                      
                      End Sub

                      J'ai déjà adapté ta boucle mais la variable MaDate n'est pas initialisée et je sais pas où tu va la chercher
                      A+
                      1. cela ne viendrait-il pas du fait que tu utilises lig comme variable de boucle et que tu utilises aa dans cette boucle ??