Erreur 9 - L'indice n'appartient pas à la sélection

Bonjour à tous,

Je vous sollicite car j'aurais besoin de votre aide concernant cette problématique svp

Cette ligne dans mon code me pose soucis. Elle me donne l'erreur 9:

 If Workbooks(Sheets("Paramètres").Range("M2").Value).IsAddin = False Then

        Workbooks(Sheets("Paramètres").Range("M2").Value).IsAddin = True

Voici le code complet:

Private Sub Workbook_BeforeClose(Cancel As Boolean)

   Dim aa As Byte

Dim Nom As String

For aa = 0 To 9

Nom = Sheets("Paramètres").Range("K2").Value

On Error Resume Next

Application.ActivePrinter = Nom

If ActivePrinter = Nom Then Exit For

Next

    Application.ActivePrinter = Nom

    Sheets("Saisie").Select

    Application.CommandBars("cell").Enabled = True

    Application.CommandBars("Ply").Enabled = True

    Application.CommandBars("Visual Basic").Enabled = True

    Application.CommandBars("Macro").Enabled = True

    Application.EnableEvents = True

    On Error Resume Next

    If Workbooks(Sheets("Paramètres").Range("M2").Value).IsAddin = False Then

        Workbooks(Sheets("Paramètres").Range("M2").Value).IsAddin = True

    End If

    Workbooks(Sheets("Paramètres").Range("M2").Value).Close savechanges:=True

    On Error GoTo 0

    If ThisWorkbook.ReadOnly Then

        ThisWorkbook.Close savechanges:=False

    Else

        ActiveWorkbook.Close savechanges:=True

    End If

Application.StatusBar = ""

Sheets("Utilisateurs").Visible = xlSheetVeryHidden

End Sub

Voici ce que j'ai commencé à faire mais un objet est requis et je ne comprends pas tellement ce qu'il manque...

J'ai défini le Workbook comme variable

Dim WbEncours As String

Puis, lui faire dire sur quoi cette variable va être fixer:

Il me manque que le "If", je ne sais pas comment l'incrémenter

Set WbEncours=(Sheets("Paramètres").Range("M2").Value)
With WbEncours
If WbEncours.IsAddin=False Then
WbEncours.IsAddin=True
End With

Merci d'avance pour votre aide

Bonjour FeitaN_, le forum,

image

Essaies avec:

ThisWorkbook.Sheets("Paramètres").Range("M2").Value

Cordialement,

Bonjour xorsankukai,

Merci pour ton aide. J'avais déjà essayé cette possibilité. Ca n'a pas marché

Voici la ligne exact que j'ai mis, peut-être que c'est moi qui ai mal écrit:

If ThisWorkbook.Sheets("Paramètres").Range("M2").Value.IsAddin=False Then

ThisWorkbook.Sheets("Paramètres").Range("M2").Value.IsAddin=True
End If

ThisWorkbook.Sheets("Paramètres").Range("M2").Value.Close savechanges:=true

Il me demande toujours l'objet (erreur d'exécution 424)

Re,

Il semblerait que "IsAddin" ne soit pas utilisé correctement ?

https://docs.microsoft.com/fr-fr/office/vba/api/excel.workbook.isaddin

image

Cordialement,

Re,

Sur un autre module, j'utilise .IsAddin=False (ou True), ça dépend de ce que je veux pour cette macro complémentaire

De plus, je viens de consulter qu'il est possible de mettre du binaire sur IsAddin

Pour finir, j'ai mis une apostrophe sur mes lignes de condition pour voir si c'était réellement le problème et ce n'est pas le cas.

Le réel soucis sur la déclaration Sheets("Paramètres").Range("M2").value . Faut-il donc déclarer une variable, puis appliquer la variable sur quoi elle va être mise ?

Merci pour votre retour

Re,

Désolé, mais je ne connais pas l'utilisation de IsAddin, je passe donc la main à plus expérimenté, désolé,

Cordialement,

Re,

Il n'y a pas de soucis :) En gros, cette fonction de vba vous permet de ne pas afficher un fichier (notamment une BDD) quand elle est en true

Mon point vraiment bloquant c'est surtout sur la partie :

Sheets("Paramètres").Range("M2").Value

Est-ce que si je déclare une variable et je l'associe, ça pourrait être une solution ??

Dim myrange As String

Set myrange= Workbook(Sheets("Paramètres").Range("M2").Value

J'ai remplacé cette partie du code par "myrange" pour toutes les lignes et VBA me dit qu'un objet est requis (erreur 424)

Merci encore

Re,

A tout hasard, as-tu essayé sans le Set ?

Crdlt,

Re,

Ah, ça a l'air de marcher. Maintenant, ça me met qualificateur incorrect, sur mon code:

If myrange.IsAddin=False Then

sur "myrange", peut-être que je l'ai mal défini?

En supprimant .value ?

myrange= ThisWorkbook.Sheets("Paramètres").Range("M2")

Maintenant, il me met l'erreur sur "Workbook" (j'avais ajouté un "s" pardon). Il me met "Sub ou fonction non définie"

Et je pense qu'il y ait besoin du .Value parce qu'il y a besoin d'aller chercher la valeur dans la feuille Paramètres en cellule M2, non?

Oups, j'ai rectifié le message précédent (j'avais bêtement fait un copier/coller)....

Je viens de l'essayer et ça me met exactement la même chose (je garde donc .Value)

La ligne qui apparaît en jaune, c'est ma déclaration de procédure:

Private Sub Workbook_BeforeClose(Cancel As Boolean)

Est-ce que ma déclaration de variable est bonne ?

Dim myrange As String

Merci pour le retour

Heu....je crois que je suis à côté de la plaque....

M2 contient le nom du classeur ?

bonjour,

Si je peux me permettre d'intervenir sur ce fil :

.isaddin est une méthode d'un objet workbook.

dim nom_du_workbook as string
dim wb as workbook

nom_du_workbook= sheets("Paramètres").range("M2").value
set wb=workbooks(nom_du_workbook)
if wb.isaddin=false then

Re xorsankukai et Bonjour h2so4,

Oui la cellule M2 contient bien le classeur où récupérer les données

@h2so4, merci pour ton aide. J'ai mis exactement ton code et il me renvoie à l'erreur initiale: "Erreur d'exécution 9, l'indice n'appartient pas à la sélection"

En pointant sur la ligne :

Set wb=Workbooks(nom_du_workbook)

Re,

Bonjour h2so2 , merci d'être venu à ma rescousse, je n'ai pas les idées très claires aujourd'hui....

Peut-être manque-t-il l'extension du classeur ?

nom_du_workbook= sheets("Paramètres").range("M2").value & ".xlsx"    'où .xlsm

Crdlt,

Voici un fichier exemple

8classeur1-1.xlsm (14.89 Ko)

Merci xorsankukai pour ton retour

Mais l'erreur reste toujours figer sur :

Set wb=Workbooks(nom_du_workbook)

Bonjour,

Si tu as un message sur cette instruction, c'est que le contenu de la variable nom_du_workbook ne correspond pas à un nom de workbook ouvert en excel.

Rechercher des sujets similaires à "erreur indice appartient pas selection"