Ma macro ne renvoie pas le résultat voulu

Bonjour,

J'ai écris une macro qui a pour but de rechercher les dates d'une colonnes (A33:A48) dans une plage (ligne: BU31:EJ31) et avec des conditions afficher des valeurs. J'ai deux feuilles: "TDB" et "Vue"

La macro se trouve derrière un bouton case d'option (Case d'option 7) de la feuille "TDB" et le resultat que je voudrais afficher se trouve dans la feuille "Vue".

Il semble que mon code soit correcte mais aucun résultat ne s'affiche comme si il ne trouve rien.

Je ne comprend pas pourquoi, Veuillez vérifier, Voici le code et ci-joint le fichier:

Sub macro1()

Dim i, j As Integer

Dim kase As Range

Dim plag As Range

Dim v As Variant

With ActiveSheet.Shapes("Case d'option 7").OLEFormat.Object

Set plag = Worksheets("vue").Range("A1:EJ48")

v = plag

For i = 31 To 48

Set kase = Worksheets("vue").Range("BU31:EJ31").Find(what:=Cells(i, 1), LookIn:=xlValues, lookat:=xlWhole)

If kase Is Nothing Then

v(i, 72) = ""

Else

If v(i, 70) = "" And v(i, 2) <> "" Then

Cells(i, kase.Column) = v(i, 2) * v(i, 4)

End If

If v(i, 70) <> "" And v(i, 2) > 0 Then

Cells(i, kase.Column) = v(i, 2) * Cells(i, 4) - Cells(i, kase.Column - 1)

End If

End If

Next i

plag = v

ThisWorkbook.Worksheets("vue").Calculate

End With

End Sub

7tdb-tn-copie.xlsm (42.04 Ko)

bonjour,

l'instruction find a du mal avec les date voici une alternative

 Set kase = Nothing
 For Each dat In Worksheets("vue").Range("BU31:EJ31")
   If dat.Value = Worksheets("vue").Cells(i, 1) Then Set kase = dat: Exit For
 Next
 'Set kase = Worksheets("vue").Range("BU31:EJ31").Find(what:=Worksheets("vue").Cells(i, 1).Value, LookIn:=xlValues, lookat:=xlWhole)

Bonjour,

Après avoir élagué le superflu, il reste :

Sub macro1()
Dim i, j As Integer
Dim kase As Range
    With Worksheets("vue")
        For i = 33 To 48
            Set kase = .Range("BU31:EJ31").Find(.Cells(i, 1), , xlFormulas, xlWhole)
            If kase Is Nothing Then
                .Cells(i, 72) = ""
            Else
                If .Cells(i, 70) = "" And .Cells(i, 2) <> "" Then
                    .Cells(i, kase.Column) = .Cells(i, 2) * .Cells(i, 4)
                End If
                If .Cells(i, 70) <> "" And .Cells(i, 2) > 0 Then
                    .Cells(i, kase.Column) = .Cells(i, 2) * .Cells(i, 4) - .Cells(i, kase.Column - 1)
                End If
            End If
        Next i
        .Calculate
    End With
End Sub

A+

Bonjour.

Merci et encore merci.

Merci ton code marche super bien. Je ne comprends pas car ce code je l'ai adapté, j'avais déjà utilisé ce code ailleurs et cela a marché. Mais pourquoi cela ne marche pas ici?

Rechercher des sujets similaires à "macro renvoie pas resultat voulu"