Probléme macro ...

Résolu
Napalawow Messages postés 38 Statut Membre -  
lermite222 Messages postés 9042 Statut Contributeur -
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. zavenger Messages postés 817 Statut Membre 161
     
    cela ne viendrait-il pas du fait que tu utilises lig comme variable de boucle et que tu utilises aa dans cette boucle ??
    0
  2. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    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+
    0
  3. Napalawow Messages postés 38 Statut Membre 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
    
    0
  4. amigo
     
    bonjour,

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


    A+.
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Napalawow Messages postés 38 Statut Membre 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)..

    +
    0
  7. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    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
    0
  8. Napalawow Messages postés 38 Statut Membre 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 !
    +
    0
  9. Napalawow Messages postés 38 Statut Membre 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 !
    0
  10. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    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+
    0
  11. Napalawow Messages postés 38 Statut Membre 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 +
    0
  12. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    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
    0