With ThisWorkbook.Worksheets(le nom d'une variable)

Bonjour,

N'y a t-il pas moyen d'utiliser une feuille qui aurait le nom d'une variable définie dans un onglet ?

plano = Range("MENU!V2").Value

    Application.EnableEvents = False

    With ThisWorkbook.Worksheets(plano)
        n = .Cells(.Rows.Count, 10).End(xlUp).Row
        Application.ScreenUpdating = False
        For I = 6 To n
            k = .Cells(I, 10)
            If .Cells(I, 13).Value <> "" Then
                j = j + 1: ReDim Preserve Tpm(2, j)
                Tpm(0, j) = k: Tpm(1, j) = .Cells(I, 12): Tpm(2, j) = .Cells(I, 13)
            End If
        Next I
    End With

Merci pour votre aide

Loadlucas

Bonjour Lucas, bonjour le forum,

Tu confonds VBA et formules :

plano = Range("MENU!V2").Value

devient en VBA :

Dim plano As String 'pas obligatoire mais toujours conseillé de déclarer les variables...
plano = Worksheets("MENU").Range("V2").Value

Bonjour

Merci pour votre réponse.

Le "With" ne fonctionne toujours pas avec :

With ThisWorkbook.Worksheets(plano)

Encore merci,

Loadlucas

Re,

Le "With" ne fonctionne toujours pas ne signifie rien pour nous... Quel est le message d'erreur ?

Il n'y a rien de pire que de travailler sur un bout de code et/ou sans fichier. Si tu désires obtenir une solution rapidement, fait l'effort de nous envoyer de quoi te la proposer...

Bonjour à tous,

Une piste à étudier.

Cdlt.

Public Sub DEMO()
Dim wb As Workbook
Dim ws As Worksheet, ws2 As Worksheet
Dim plano As String
Dim Tpm()
Dim n As Long, i As Long, j As Long

    Set wb = ThisWorkbook
    Set ws = wb.Worksheets("MENU")
    plano = ws.Cells(2, 22).Value

    On Error Resume Next
    Set ws2 = wb.Worksheets(plano)
    On Error GoTo 0

    If ws2 Is Nothing Then
        MsgBox "La feuille " & plano & " n'existe pas !...", 64, "Information"
    Else
        With ws2
            n = .Cells(.Rows.Count, 10).End(xlUp).Row
            For i = 6 To n
                If Not IsEmpty(.Cells(i, 13)) Then
                    ReDim Preserve Tpm(3, j + 1)
                    Tpm(0, j) = .Cells(i, 10).Value
                    Tpm(1, j) = .Cells(i, 12).Value
                    Tpm(2, j) = .Cells(i, 13).Value
                    j = j + 1
                End If
            Next i
            'If j > 0 Then .Cells(1).Resize(j, 3).Value = Application.Transpose(Tpm)
        End With
    End If
End Sub
Rechercher des sujets similaires à "thisworkbook worksheets nom variable"