Ouverture de classeur: incompatibilité de type

Bonjour,

J'ai un petit soucis de code et je ne vois pas le pb.

En cliquant sur un bouton d'un classeur1, je voudrais qu'un second classeur s'ouvre sur un onglet spécifique (du nom de la cellule B10 du premier classeur), remplisse certains champs de celui-ci, puis passe à un autre onglet (du nom de la cellule B11 du premier classeur) pour faire exactement les même insertion.

pour ce faire, je stocke les valeurs de B10 et B11 dans un tableau et je crée une boucle sur celui-ci.

Mon problème, c'est que j'ai le message d'erreur "incompatibilité de type" sur l'ouverture du second classeur et je ne comprend pas pourquoi:

With Workbooks.Open(chem(0) & "\" & fichier).Worksheets(Com(l))

Un msgbox sur "Com(0)" et "Com(1)" me retourne bien mes valeurs ...

Mon code:

Sub comm()

    Dim Chemin$, fichier$, dateact As Range, Copie(4), i%, j%, l%, chem(1), Co%
    chem(0) = ThisWorkbook.Sheets("Présentation et paramêtres").Range("B24")
    fichier = "comm tableau.xlsm"
    With ThisWorkbook.Worksheets("Clients")
        Com = Array(Range("B10"), Range("B11"))
        Copie(0) = .Range("B4")
        For i = 1 To 4
            Copie(i) = ""
        Next i
    End With
    If Range("B11").Value <> "" Then
        For l = 0 To UBound(Com)
            j = Month(Date) - 1
            Application.ScreenUpdating = False
            With Workbooks.Open(chem(0) & "\" & fichier).Worksheets(Com(l))
                Set dateact = .Range("B6:F13").Offset(j * 12)
            End With
            With dateact
                For j = 1 To 8
                    For i = 1 To 5
                        If .Cells(j, i) <> "" Then Exit For
                    Next i
                    If i > 5 Then i = j: Exit For
                Next j
                If j > 8 Then
                    MsgBox "La plage est pleine !", vbCritical, "Erreur"
                    Exit Sub
                End If
                .Rows(i) = Copie
            End With
        Next
                ActiveWorkbook.Save
                ActiveWorkbook.Close

Merci pour votre aide

Bonjour Yuplop, bonjour le forum,

Je ne pense pas que l'on puise spécifier l'onglet à l'ouverture d'un classeur. Ni que l'on puisse utiliser le With avant de l'ouvrir.

On l'ouvre et ensuite le With :

Workbooks.Open(chem(0) & "\" & fichier)
    With ActiveWorkbook.Worksheets(Com(l))

Salut ThauThème et merci pour ton aide.

J'avais pensé à essayer ta méthode mais le résultat est le même ...

Re,

Que vaut chem(0) ? Est-ce que c'est bien un chemin valide ?

Chem(0) correspond au champs "B24" de l'onglet "Présentation et paramêtres" du classeur 1.

Sa valeur est : C:\Users\Username\Desktop\Ent\Comm

J'ai mis ça en place pour évité de devoir repasser par le code en cas de renommage de répertoire ou de déplacement de fichier.

Le chemin est valide car le fichier d'ouvre bien.

Dans la partie de code que tu m'as donné tout à l'heure, le message d'erreur porte sur

With ActiveWorkbook.Worksheets(Com(l))

C'est bon, je viens de comprendre mon erreur.

En fait, il manquait des guillemets:

With ActiveWorkbook.Worksheets("" & Com(l) & "")

Merci pour ton aide

Rechercher des sujets similaires à "ouverture classeur incompatibilite type"