Probléme macro ...

Résolu/Fermé
Napalawow Messages postés 38 Date d'inscription mardi 29 avril 2008 Statut Membre Dernière intervention 28 mai 2008 - 19 mai 2008 à 11:56
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 - 19 mai 2008 à 17:19
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
A voir également:

11 réponses

zavenger Messages postés 811 Date d'inscription vendredi 29 février 2008 Statut Membre Dernière intervention 20 avril 2012 161
19 mai 2008 à 12:00
cela ne viendrait-il pas du fait que tu utilises lig comme variable de boucle et que tu utilises aa dans cette boucle ??
0
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 191
19 mai 2008 à 12:04
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
Napalawow Messages postés 38 Date d'inscription mardi 29 avril 2008 Statut Membre Dernière intervention 28 mai 2008 1
19 mai 2008 à 13:23
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
bonjour,

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


A+.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Napalawow Messages postés 38 Date d'inscription mardi 29 avril 2008 Statut Membre Dernière intervention 28 mai 2008 1
19 mai 2008 à 13:29
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
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 191
19 mai 2008 à 13:37
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
Napalawow Messages postés 38 Date d'inscription mardi 29 avril 2008 Statut Membre Dernière intervention 28 mai 2008 1
19 mai 2008 à 13:41
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
Napalawow Messages postés 38 Date d'inscription mardi 29 avril 2008 Statut Membre Dernière intervention 28 mai 2008 1
19 mai 2008 à 15:47
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
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 191
19 mai 2008 à 16:11
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
Napalawow Messages postés 38 Date d'inscription mardi 29 avril 2008 Statut Membre Dernière intervention 28 mai 2008 1
19 mai 2008 à 16:57
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
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 191
19 mai 2008 à 17:19
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