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

Re,

Le nom du workbook que j'ai, c'est "ThisWorkbook"

En remplaçant ça, plus loin dans mon code, j'ai déjà "ThisWorkbook". Du coup, ça m'est apparu en erreur..

Je suis désolé, je commence à m'y perdre

re-bonjour,

quel est le nom de classeur qui se trouve dans la feuille "paramètres" en M2 ? C'est ce nom-là dont je parle et qui doit correspondre à un nom de classeur ouvert pour que ta macro fonctionne, même si je n'ai pas compris ce que tu cherches à faire.

Re,

C'est "Feuil4"

Ce que je cherche à faire, c'est tout simplement débloquer ce fichier. En fait ce code, permet à l'aide de la macro complémentaire, d'aller puiser dans les données d'un autre classeur (Base de données). Et de reporter une donnée spécifique sur ce classeur. Je n'ai montré qu'une petite partie parce que c'est vraiment trop long.

J'ai vraiment axé ma demande sur ce qui poser problème afin que l'on gagne du temps

Vous remerciant infiniment pour votre partage de savoir

bonjour,

feuil4 n'est pas un nom de classeur valable. c'est sans doute le nom d'une feuille d'un classeur.

que veux-tu obtenir comme résultat en utilisant cette instruction ?

.IsAddIn = True

Re,

Je perds totalement ma tête, vraiment navré

Ok donc c'est le nom de mon fichier/classeur. Donc ce qui se trouve en M2 se nomme "Données.xlsx"

En ajoutant la macro complémentaire, j'empêche les utilisateurs de modifier les données de la base de données

C'est une règle que j'applique

Bonjour,

donc le problème si tu as as le message d'erreur "Erreur 9 - L'indice n'appartient pas à la sélection" sur l'instruction en question, c'est que "données.xlsx" n'est pas trouvé parmi les fichiers ouverts en Excel.

Re,

Pourtant, je t'assure à 100% que lorsque j'ouvre mon fichier principal et que IsAddin est en False, le fichier en question et n'importe quel autre s'ouvre également

Je ne te remets pas du tout en question. Comment pouvons-nous corriger le tir selon toi face à ce cas ?

Je viens tout juste d'essayer de réouvrir le fichier "Données.xlsx" directement dans le dossier et il me dit qu'il est déjà ouvert

Ce qui est vraiment étrange en +... Parce que normalement, je ne pouvais pas du tout ouvrir l'ancienne base de données alors que celle-ci, je peux..

Je ne comprends rien

re-Bonjour,

Ce qui est vraiment étrange en +... Parce que normalement, je ne pouvais pas du tout ouvrir l'ancienne base de données alors que celle-ci, je peux..

Je ne comprends rien

C'est d'autant plus difficile pour nous qui n'avons pas accès à tes fichiers, ni à ton PC.

Je te confirme que ta macro fonctionne correctement s'il y a un fichier "données.xlsx" qui est ouvert. (après avoir corrigé une erreur d'un if en trop).

D'autre part IsAddIn=true est utilisé pour définir un classeur qui contient des fonctions supplémentaires pour Excel, plutôt que pour interdire l'accès à des données.

Re,

J'aurais vraiment aimé partagé. Au pire ce que je peux faire, c'est supprimé toutes les données sensibles et vous envoyer le fichier en MP si cela ne vous dérange pas ?

Sinon, je trouverai une solution Lambda à mon niveau...

Merci pour la confirmation concernant le code

Bah, concernant IsAddin, elle cache vraiment la feuille. Mais merci pour l'info, ça me cultive

Vous souhaitant une très bonne soirée, je ne vous dérange pas plus

Bonsoir,

je pense avoir compris le problème.

lorsque .isaddin est true, le classeur n'est plus accessible via son nom

donc une instruction de type set wb=workbooks(nom_du_classeur) ne fonctionne pas.

Il y a certainement moyen de pallier ce problème, en faisant le set à l'ouverture du fichier et en gardant en mémoire la référence à cet objet wb. le où et le quand dépend du code sur lequel je n'ai pas la visibilité.

Bonjour h2so4,

Merci pour ton retour. J'avais étudié cette possibilité

C'est pourquoi, j'ai volontairement changé le nom de la nouvelle base de données par l'ancienne. Mais sans succès...

Donc selon moi, ton affirmation est juste

Dans la feuille de code "ThisWorkbook", j'ai un code pour la fermeture (celui où le problème est) mais aussi un pour l'ouverture. Je vais l'envoyer

Merci

Dans un 1er temps, voici le code pour l'ouverture (je peux l'expliquer s'il y a besoin):

Private Sub Workbook_Open()

 Worksheets("Login").Visible = xlSheetVisible
    Worksheets("Login").Activate
    Dim form As Worksheet
    Application.ScreenUpdating = False

With Worksheets("Modèle")
.Shapes("Image1").Visible = False
.Shapes("Image2").Visible = False
End With

    'Range("A1:O32").Select
    'ActiveWindow.Zoom = True
    'Range("B5").Select
    'ZoomAff = ActiveWindow.Zoom
    'Range("A1").Select
    ActiveWindow.ScrollRow = Selection.Row
    ActiveWindow.ScrollColumn = Selection.Column

    ThisWorkbook.IsAddin = False
    Application.EnableEvents = True

    Sheets("Saisie").Select
    Call Deb("Saisie")
    Sheets("Saisie").Range("E7").Value = ""
    Call Fin("Saisie")

    Application.EnableEvents = True

    With ActiveWindow
        .DisplayHeadings = False
        .DisplayHorizontalScrollBar = False
        .DisplayVerticalScrollBar = True
        .DisplayWorkbookTabs = False
    End With

    'Range("A1:P36").Select
    'ActiveWindow.Zoom = True

    'Application.CommandBars("cell").Enabled = False
    'Application.CommandBars("Ply").Enabled = False
    'Application.VBE.MainWindow.Visible = False
    'Application.CommandBars("Visual Basic").Enabled = False
    'Application.CommandBars("Macro").Enabled = False

    Call Deb("Saisie")
    Range("D16").NumberFormat = "[=0]"""";0###""-""##""-""###""-""####"
    If Sheets("Paramètres").Range("B14").Value = "Calculée" Then
        D = Day(Now()) / 15
        If D > 1 And Month(Now) < 12 Then
            Sheets("Saisie").Range("D30").Value = CDate(Month(Now) + 1 & "/" & Year(Now))
        ElseIf D > 1 And Month(Now) = 12 Then
            Sheets("Saisie").Range("D30").Value = CDate(1 & "/" & Year(Now) + 1)
        Else
            Sheets("Saisie").Range("D30").Value = Now()
        End If
        Sheets("Saisie").Range("D30").Locked = True
        Sheets("Saisie").Range("D30").FormulaHidden = True

    Else
        Sheets("Saisie").Range("D30").Value = ""
        Sheets("Saisie").Range("D30").Locked = False
        Sheets("Saisie").Range("D30").FormulaHidden = False

    End If
    Range("K1").Value = ThisWorkbook.BuiltinDocumentProperties("Manager").Value
    Call Fin("Saisie")

    Call Default_Printer_Port
    Call Fin("Modèle")
    Call Fin("Suivi")
    Range("D4").Select

    Call FichierListe

Worksheets("Login").Activate
Application.ScreenUpdating = True
Usf_Login.Show

End Sub

Dans un 2ème temps, le fichier marche très bien sur mon ordi perso... Même lorsque j'essaie d'ouvrir la BDD, ça ne me l'ouvre pas ici alors que sur mon ordi pro, ça me l'ouvre, ce qui n'est pas normal puisqu'il ne doit pas me l'ouvrir (en sachant que IsAddin est en True)

bonjour,

dans quel fichier se trouve cette procédure workbook_open ?

Re,

Dans le fichier principal dans la même feuille que la procédure Workbook_Close ("ThisWorkbook")

Je suis complètement perdu. dans ta macro tu essaies bien de mettre isaddin=true pour un fichier dont le nom est dans une feuille paramètre (en l'occurrence données.xlsx) ? ce fichier est différent du fichier principal ?

Oui, tu as bien résumé. Devrions-nous continuer en privé?

J'ai mon fichier principal avec toutes les manips, saisies, que les gens font. C'est dans ce fichier où tous les codes sont.

Il y a ensuite un deuxième fichier qui lié indirectement au fichier principal. Ce fichier représente la Base de données et aucun code n'est incrémenté à l'intérieur de celui-ci

Tous les codes que je donne, proviennent de mon fichier principal

Bonjour,

désolé j'ai toujours du mal à comprendre les tenants et les aboutissants de cette application. Même si le sujet m'interesse, je vais en rester-là.

Re,

D'accord, je te remercie pour ta contribution et pour ton aide

J'aurais bien voulu connaître la partie "Set" dont tu as parlé mais restons en là

Je vais utiliser le système B, non pratique

Très belle journée et continuation

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