VBA - Problème compatibilité variable

Bonjour à tous,

J'ai un petit problème de compatibilité de variable comme je l'annonce dans le titre et étant débutant en VBA, je suis complétement perdu

Le but de la macro est de copier une extraction de chiffre d'affaire vers une autre feuil afin de les ranger par date. Pour ce faire, j'utilise une variable qui me permet de corréler la date de l'extraction du CA avec une suite de date sur une autre feuil, jusque la tout va bien 8).

J'ai ensuite voulu créer une InputBox pour que l'utilisateur n'oublie pas de rentrer la bonne date. Et c'est la que ca se complique, puisque les 2 variables fonctionnent indépendamment l'une de l'autre mais pas quand elles sont mises bout à bout

Voici la macro :

Sub Macro3()

Dim Madate As String
  Madate = InputBox("Insert date in format dd/mm/yy", "User date", Format(Now(), "dd/mm/yy"))
  If IsDate(Madate) Then
    Madate = Format(CDate(Madate), "dd/mm/yy")
    MsgBox Madate
  Else
    MsgBox "Wrong date format"
  End If

Range("B1").Value = Madate
Range("D2:F2").Select
Selection.Copy

Dim i As Integer
    Range("D2:F2").Select
    Selection.Copy
    Sheets("feuil1").Select
    i = Application.WorksheetFunction.Match(Sheets("Feuil2").Range("B1"), Sheets("Feuil1").Range("A:A"), 0)
    Range("A" & i).Offset(0, 1).Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
        ActiveCell.Select
    Application.CutCopyMode = False

End Sub

Je vous joins bien évidemment le fichier,

Merci d'avance,

Erwan

16help.xlsm (20.02 Ko)

Bonjour Skadowche, bonjour le forum,

Il semblerait que le format des dates ne soit pas le même. Dans ce cas, Pour éviter toute confusion je transforme la date en entier long avec DateSerial. Plus d'équivoque et/ou d'inversion jour/mois, plus de problème de format...

Le code modifié :

Sub Macro3()
Dim Madate As String
Dim MDS As Long
Dim TV As Variant
Dim I As Integer
Dim MS As Long

Madate = InputBox("Insert date in format dd/mm/yy", "User date", Format(Now(), "dd/mm/yy"))
If IsDate(Madate) Then
    Madate = Format(CDate(Madate), "dd/mm/yy")
    MsgBox Madate
Else
    MsgBox "Wrong date format"
    Exit Sub
End If
MDS = DateSerial(Year(Madate), Month(Madate), Day((Madate)))
Sheets("Feuil2").Range("B1").Value = Madate
TV = Worksheets("Feuil1").Range("A1").CurrentRegion
For I = 2 To UBound(TV, 1)
    DS = DateSerial(Year(TV(I, 1)), Month(TV(I, 1)), Day(TV(I, 1)))
    If DS = MDS Then
        Sheets("Feuil2").Range("D2:F2").Copy
        Sheets("Feuil1").Cells(I, 2).PasteSpecial (xlPasteValues)
        Application.CutCopyMode = False
        Exit For
    End If
Next I
End Sub

Super, tout fonctionne ! Merci beaucoup

Bonne journée

Rechercher des sujets similaires à "vba probleme compatibilite variable"