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. cela ne viendrait-il pas du fait que tu utilises lig comme variable de boucle et que tu utilises aa dans cette boucle ??
    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. 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. bonjour,

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


          A+.
          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. 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. 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. 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. 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. 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
                        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