Problème date via inputbox

Al capone

XLDnaute Junior
Bonjour a tous,

Via un inputbox je récupère dans une variable au format jj/mm/aaaa

Ensuite j'ai fait une boucle pour chercher dans un tableau toutes les lignes contenant cette date pour les supprimer ...
Il ne trouve rien car je pense que j'ai un problème de variable.

Dans mon tableau les dates sont au même format que ma variable mais ma variable de la inputbox a bien la date mais avec des guillemets ....
Je pense que c'est pour cela que ma boucle ne trouve pas ...

Donc comme dit ma variable de mon inputbox est

debut = "05/07/2011"

Et voici mon code pour chercher :
Code:
Dim arTemp() As String
Dim bFound As Boolean
Dim ChercheX As String
Dim ma_plage as String
Dim Nom_Feuil As String

ChercheX = debut
ma_plage = "C5:C50"
Nom_Feuil = "Recap"

bFound = FindAll (ChercheX, Sheets(Nom_Feuil), ma_plage, arTemp())
If bFound = True Then
Worksheets ("Recap").Activate
For x = 1 to Ubound(arTemp)
Rows(arTemp(x)).Delete
Next x
End id.

Je tiens a préciser que j'utilise déjà ce genre de boucle pour faire d'autres recherches et cela marche nickel . La je pense que c'est vraiment un problème de variable ....

Merci pour votre aide :)
 

Al capone

XLDnaute Junior
Re : Problème date via inputbox

Re,

Voici mon inputbox :

Code:
Dim tmp1 As Variant
Dim debut As Date
Dim aujourdhui As Date

debut = Format(Date - 1, "dd-mm-yyyy")
aujourdhui = Format(Date, "dd-mm-yyyy")
    
tmp1 = InputBox("Confirmez la date du rapport à éditer", "Rapport journalier d'activité", debut)
 
If tmp1 = "" Then
        MsgBox "Aucune date saisie - Opération annulée", vbInformation, "Rapport   journalier d'activité"
        Exit Sub
        End If
        If Not IsDate(tmp1) Then
        MsgBox "Format Date Incorrecte - Opération annulée", vbInformation, "Rapport journalier d'activité"
        Exit Sub
        End If
        If tmp1 = aujourdhui Or tmp1 > aujourdhui Then
        MsgBox "Vous ne pouvez pas générer de rapport d'activité pour la date du Jour" & vbCrLf & _
                "ou une date ultérieure." & vbCrLf & vbCrLf & _
               "Opération annulée", vbInformation, "Rapport journalier d'activité"
        Exit Sub
        End If

Dim arTemp() As String 'Temp Array
    Dim bFound As Boolean 'Flag
    Dim ChercheX As String
    Dim ma_plage As String
    Dim Nom_Feuil As String

    ChercheX = debut
    ma_plage = "C5:C50"
    Nom_Feuil = "Trains supprimés"
      
    bFound = FindAll(ChercheX, Sheets(Nom_Feuil), ma_plage, arTemp())
    If bFound = True Then
    Worksheets("Trains supprimés").Activate
            For x = 1 To UBound(arTemp)
            Rows(arTemp(x)).Delete
            Next x
    End If
Mes dates dans mon tableau sont dans la colonne C à partir de la 5ième ligne.

Et je n'arrive pas à voir pourquoi il ne trouve pas les dates. Par contre la fonction Findall je l'utilise pour chercher du texte et celà marche nickel. Avec les dates çà coince....

Voici la fonction Findall que j'utilise :
Code:
Function FindAll(ByVal sText As String, ByRef oSht As Worksheet, ByRef sRange As String, ByRef arMatches() As String) As Boolean
' --------------------------------------------------------------------------------------------------------------
' FindAll - To find all instances of the1 given string and return the row numbers.
' If there are not any matches the function will return false
' --------------------------------------------------------------------------------------------------------------
On Error GoTo Err_Trap
Dim rFnd As Range ' Range Object
Dim iArr As Integer ' Counter for Array
Dim rFirstAddress ' Address of the First Find
' -----------------
' Clear the Array
' -----------------
Erase arMatches
Set rFnd = oSht.Range(sRange).Find(what:=sText, LookIn:=xlValues, lookAt:=xlPart)

If Not rFnd Is Nothing Then
        rFirstAddress = rFnd.Address
    Do Until rFnd Is Nothing
        iArr = iArr + 1
        ReDim Preserve arMatches(iArr)
        arMatches(iArr) = rFnd.Row 'rFnd.Address pour adresse complete ' rFnd.Row  Pour N° de ligne
        Set rFnd = oSht.Range(sRange).FindNext(rFnd)
        If rFnd.Address = rFirstAddress Then Exit Do ' Do not allow wrapped search
    Loop
        FindAll = True
Else
    ' ----------------------
    ' No Value is Found
    ' ----------------------
    FindAll = False
End If
' -----------------------
' Error Handling
' -----------------------
Err_Trap:
If Err <> 0 Then
    MsgBox Err.Number & " " & Err.Description, vbInformation, "Find All"
    Err.Clear
    FindAll = False
    Exit Function
End If
End Function
 
Dernière édition:

Al capone

XLDnaute Junior
Re : Problème date via inputbox

Re,

Disons dans ce test simple pour l'instant je prends la valeur par defaut qui est : debut pour tester et qui correspond à j-1
C'est pour celà que j'ai laissé pour l'instant :

Code:
ChercheX = debut

au lieu de 

ChercheX = tmp1

Mais quand j'execute
Code:
ChercheX = "05/07/2011"
dans les deux cas : tmp1 et debut...
Et j'ai bien dans mon tableau des lignes avec la date 05/07/2011.....
 

youky(BJ)

XLDnaute Barbatruc
Re : Problème date via inputbox

Bonjour à tous,
La date de l'inputbox est prise pour du texte l'emploi de Cdate fera la conversion.

tmp1 = Cdate(InputBox("Confirmez la date du rapport à éditer", "Rapport journalier d'activité", debut))

Bruno
 

Al capone

XLDnaute Junior
Re : Problème date via inputbox

re,

Si je remplace comme suggéré :

ChercheX = "05/07/2011"

Comme avant..... De + la ligne ci-dessous plante si par exemple je met autre chose qu'une date :
Code:
tmp1 = CDate(InputBox("Confirmez la date du rapport à éditer", "Rapport journalier d'activité", debut))
Alors qu'avant celà passe car la vérif est faite ensuite par la ligne :
Code:
If Not IsDate(tmp1) Then
         MsgBox "Format Date Incorrecte - Opération annulée", vbInformation, "Rapport journalier d'activité"
         Exit Sub
         End If
 

Al capone

XLDnaute Junior
Re : Problème date via inputbox

Si je mais le Cdate ici :

Code:
ChercheX = CDate(tmp1)
    ma_plage = "C5:C50"
    Nom_Feuil = "Trains supprimés"

Alors

Code:
ChercheX = 05/07/2011

Je me demande si ce n'est pas la fonction qui n'arrive pas à trouver ou bien que la fonction le convertit au format anglais, ou bien je sais pas..........
Alors que la fonction me trouve pour une autre macro très bien des trucs comme 07-B502S dans mes tableaux
 

Al capone

XLDnaute Junior
Re : Problème date via inputbox

Re,

Ou çà ? car si je fais celà ici :
Code:
ChercheX = Clng(tmp1)
J'ai une erreur "incompatibilité de type" .......

Et dans mes tableaux qui se remplissent via un userform, j'ai du mettre Cdate pour que mes dates s'affichent dans un format "Français".....
 

Discussions similaires

Réponses
2
Affichages
154
Réponses
3
Affichages
301

Statistiques des forums

Discussions
312 304
Messages
2 087 062
Membres
103 449
dernier inscrit
pulco41