Problème Résultat - BOUCLE For avec doubles conditions

rkan

XLDnaute Nouveau
Bonjour,

Ci dessous une partie du code d'archivage sur lequel je bosse :

Code:
Sub Lancement_archiv()
    Dim Rep As Integer
    Dim Reponse1 As Date
    
    Rep = MsgBox("Lancement de la procédure d'archivaghe : voulez-vous continuez ?", vbYesNo + vbQuestion, "PROCÉDURE D'ARCHIVAGE !!")
        If Rep = vbYes Then
        
            Reponse1 = InputBox("Veuillez préciser la date d'archivage voulue en respectant le format JJ/MM/AAAA : ")

                If Reponse1 = Empty Then
                    MsgBox ("Critères d'archivages insuffisant : Fin de la procédure !")
                    Exit Sub
                End If
                If Not IsDate(Reponse1) Then
                    MsgBox ("Veuillez enter une date valide !")
                    Reponse1 = InputBox("entrer date")
                End If
                If CDate(Reponse1) > Date Then
                     MsgBox "La date doit être inférieure à la date d'aujourd'hui !"
                    Reponse1 = InputBox("entrer date")
                End If
        Archivage
    Else
        Exit Sub
    End If
End Sub

Code:
Sub Archivage()
 Dim p As Long

    For p = Range("A65536").End(xlUp).Row To 1 Step -1
        If Cells(p, 8) <= Reponse1 And Cells(p, 28).Text Like "*Procédure terminée*" Then
            Rows(p).Cut Destination:=Worksheets("ARCHIVE TMP").Cells(p, 1)
        End If
    Next p
End Sub

Mon problème est le suivant que je lance l'archivage, avec comme critère "Reponse1" dans la fonction Archivage je récupère dans la liste de affaires terminée certaines supérieures à la date spécifée en Inputbox,

si je remplace Reponse1 par une date précise dans
Code:
If Cells(p, 8) <= Reponse1
exemple :
Code:
If Cells(p, 8) <= "31/12/2010"
alors je n'ai plus d'erreur.

Comment pourrais corriger ma fonction d'archivage pour que la valeur obtenue en Inputbox ait le même effet que le fait d'indiquer une date directement dans le code.

Merci d'avance.

Pour info j'ai bien tenté de récupérer les dates de fin dans une listebox dans un USERFORM pour faciliter le choix de l'utilisateur mais là ça dépasse mes compétence en VBA donc j'essaye de rester simple.
 

tototiti2008

XLDnaute Barbatruc
Re : Problème Résultat - BOUCLE For avec doubles conditions

Bonjour rkan,

essaye peut-être

Code:
If Cells(p, 8) <= cdate(Reponse1) then

si pas ça, il faudrait un bout de fichier pour mieux comprendre d'où vient le soucis

Edit : Bing, Bonjour Pierrot ;)
 

rkan

XLDnaute Nouveau
Re : Problème Résultat - BOUCLE For avec doubles conditions

Merci à vous deux ça marche au top,

Pourtant c'est étrange j'ai bien déclaré Reponse1 en tant que Date en début de fonction :confused: , j'aime bien comprendre ce qui cloche ça évite de refaire les mêmes bêtises.

Sinon petite question sur le second critères
Code:
Cells(p, 28).Text Like "*Procédure terminée*"
le texte procédure terminée fait partie d'une colonne dite "observations", l'utilisateur y met tout ce qu'il juge utile y compris des infos qui n'ont rien à voir avec l'argument "Procédure terminée"'.

Mon problème est que seule les affaires avec seulement "Procédure terminée" sont archivées celles avec des observation en plus de Procédure terminée ne sont pas archivées.
 

tototiti2008

XLDnaute Barbatruc
Re : Problème Résultat - BOUCLE For avec doubles conditions

Re,

Mon problème est que seule les affaires avec seulement "Procédure terminée" sont archivées celles avec des observation en plus de Procédure terminée ne sont pas archivées.

vérifie comment Procédure terminée est orthographié dans le cas où il n'est pas seul
vérifie les espaces, accents et majuscules en particulier (VBA est sensible à la casse)
 

rkan

XLDnaute Nouveau
Re : Problème Résultat - BOUCLE For avec doubles conditions

en fouillant dans le forum j'ai trouvé une solution :

Code:
 If Cells(p, 8) <= CDate(Reponse1) And InStr(1, Cells(p, 28).Value, "Procédure terminée", vbTextCompare) Then
            Rows(p).Copy Destination:=Worksheets("ARCHIVE TMP").Cells(p, 1)

En gros même si la cellule d'observations testée est pleine d'informations j'arrive à savoir si elle contient ou pas l'expression "Procédure terminée". :)

Merci pour tout ^^
 

tototiti2008

XLDnaute Barbatruc
Re : Problème Résultat - BOUCLE For avec doubles conditions

Re,

@Pierrot : la date est en colonne 8 et le texte en colonne 28 ;)

@rkan : tu aurais aussi pu faire

Code:
If Cells(p, 8) <= CDate(Reponse1) And lcase(Cells(p, 28).Value) like "*procédure terminée*" Then
 

Discussions similaires

Statistiques des forums

Discussions
312 756
Messages
2 091 748
Membres
105 062
dernier inscrit
Ret78