erreur d'exécution 9 : l'indice n'appartient pas à la sélection

Dolichotis

XLDnaute Occasionnel
Bonjour !

Je viens de faire ma première vraie macro et là quand je l'exécute : erreur d'exécution 9 : l'indice n'appartient pas à la sélection.

Cette macro permet de prendre les informations dans une base de données et de les mettre dans l'outil pour permettre le calcul.
Je mets le bout de code...

Code:
Sub Ajout_composant()
' ajout_comp Macro
' Macro enregistrée le 07/05/2008 par
    Range("A21:I21").Select
    Selection.Copy
    Rows("21:21").Select
    Selection.Insert Shift:=xlDown
    Application.CutCopyMode = False
End Sub


Private Sub CommandButton2_Click()
'déclaration des variables
Dim i As Integer
Dim j As Integer
Dim DerL As Integer
Dim Nombrecomposants As Integer

'initialisation des variables
DerL = Workbooks(" essaiBase.xls ").Sheets("CI").Range("A" & (Feuil1.Rows.Count)).End(xlUp).Row

For i = 3 To DerL
    Workbooks.Open Filename:="X:\Real\essaiBase.xls"

    Windows("essaiOutil.xls").Activate
    Nombrecomposants = DerL - i + 1
    
for j=1 to Nombrecomposants
        Call Ajout_composant
next j

    If (Workbooks("essaiBase.xls").Sheets("alpha").Range("B" & i) = Workbooks("essaiOutil.xls").Sheets("alpha").Range("C5")) Then
        Range("A" & i, "B" & DerL).Select 'a verifier
        'si code AD de l'outil = code AD de la base
        
        Selection.Copy
        Range("B" & (i + 2)).Select
        ActiveSheet.Paste

        Windows("essaiBase.xls").Activate
        Range("C" & i, "B" & DerL).Select 'a verifier
        Selection.Copy

        Windows("essaiOutil.xls").Activate
        Range("F" & (i + 2)).Select
        
        ActiveSheet.Paste
        Windows("essaiBase.xls").Activate
    End If
    
Next

ActiveWorkbook.Save
ActiveWindow.Close

End Sub


Merci de votre aide !
 
Dernière édition:

cbea

XLDnaute Impliqué
Re : erreur d'exécution 9 : l'indice n'appartient pas à la sélection

Bonjour Dolichotis,

A tester :
Remplacer :
Code:
'initialisation des variables
DerL = Workbooks(" essaiBase.xls ").Sheets("CI").Range("A" & (Feuil1.Rows.Count)).End(xlUp).Row
par
Code:
'initialisation des variables
DerL = Workbooks("essaiBase.xls").Sheets("CI").Range("A" & (Feuil1.Rows.Count)).End(xlUp).Row

J'ai enlevé les espaces devant le nom du classeur car plus bas dans ta procédure, il n'y a pas d'espace.

Si cela ne change rien, peux-tu joindre un extrait de ton fichier ?
 

Dolichotis

XLDnaute Occasionnel
Re : erreur d'exécution 9 : l'indice n'appartient pas à la sélection

Merci cbea mais ca ne marche toujours pas !
Je t'envoie le fichier (sans essaiBase.xls trop lourd !)

Merci et bon week-end !
 

Pièces jointes

  • essaiOutil.xls
    34.5 KB · Affichages: 121
  • essaiOutil.xls
    34.5 KB · Affichages: 132
  • essaiOutil.xls
    34.5 KB · Affichages: 131

cbea

XLDnaute Impliqué
Re : erreur d'exécution 9 : l'indice n'appartient pas à la sélection

J'ai besoin d'une info complémentaire.
Quelle est la ligne de code VBA sur laquelle l'erreur se produit (ligne normalement en jaune) ?

Dans le fichier joint, j'ai cette ligne de code :
Code:
    DerL = Workbooks("BaseDonnees.xls").Sheets("CI").Range("A" & (Feuil1.Rows.Count)).End(xlUp).Row
Que contient le classeur "BaseDonnees.xls" ? Existe t-il dans ce classeur une feuille nommée "CI" ?

Merci
 
Dernière édition:

Dolichotis

XLDnaute Occasionnel
Re : erreur d'exécution 9 : l'indice n'appartient pas à la sélection

Bonjour !

Désolée pour vendredi, j'ai du partir un peu rapidement. Par contre, j'avais fait des modifications mais elles n'apparaissent pas dans ce fichier, j'ai peut-être oublié d'enregistrer avant d'attacher le fichier. J'ai refait des modifs ce matin
Dans essaiBase, il y a seulement les éléments à transmettre dans l'essaiOutil. Pas de code. J'ai essayé de compresser deux fichiers excel ensemble, ca ne fonctionne pas.

Je te renvoie le fichier essaiOutil modifié. Encore merci de ton aide.
 

Dolichotis

XLDnaute Occasionnel
Re : erreur d'exécution 9 : l'indice n'appartient pas à la sélection

Bon, j'ai répondu avant d'attacher le fichier... Mes excuses !
 

Pièces jointes

  • essaiOutil.xls
    35.5 KB · Affichages: 140
  • essaiOutil.xls
    35.5 KB · Affichages: 142
  • essaiOutil.xls
    35.5 KB · Affichages: 144

Dolichotis

XLDnaute Occasionnel
Re : erreur d'exécution 9 : l'indice n'appartient pas à la sélection

Merci beaucoup cbea !

Je viens de tester ton programme (entre la pause déjeuner et une réunion, je viens tout juste de m'y mettre) ça marche impecc' !

Il y a juste un petit problème : quand j'appuie sur le bouton chargerParamètres, ça exécute la macro correctement (j'ai vérifié en rouvrant) mais la fenêtre excel se ferme tout de suite après. Alors que j'aimerais seule la Essaibase se ferme. EssaiOutil resterait ouvertEt aussi que la mise en forme des cellules concernées n'est pas conservée.

Je vais essayer de voir si je peux modifier la macro en conséquence.
 

cbea

XLDnaute Impliqué
Re : erreur d'exécution 9 : l'indice n'appartient pas à la sélection

Dans la procédure "CommandButton2_Click", tu enlèves la ligne :
Code:
wbOutil.Close

Concernant la mise en forme, peux-tu me donner un exemple ?

Merci
 

Dolichotis

XLDnaute Occasionnel
Re : erreur d'exécution 9 : l'indice n'appartient pas à la sélection

Dans la procédure "CommandButton2_Click", tu enlèves la ligne :
Code:
wbOutil.Close

Concernant la mise en forme, peux-tu me donner un exemple ?

Merci

Merci pour la précision !

Peut-être que ça n'est pas le mot juste, je veux dire les bordures qui délimitent les cellules (pour rester dans un tableau).
En fait, c'est dans la procédure ajout_composant, je l'avais faite avec l'enregistreur de macro. Quand j'avais testé il me semble qu'elle marchait, maintenant, elle ne copie que le contenu des cellules et non le style des bordures (par exemple)
 

cbea

XLDnaute Impliqué
Re : erreur d'exécution 9 : l'indice n'appartient pas à la sélection

Peux-tu faire un essai en rajoutant les lignes notées en rouge ?

Code:
...

' Copier les valeurs de essaiBase dans essaiOutil
wsBase.Range("A" & CellBase.Row & ":B" & CellBase.Row).Copy
wsOutil.Range("A" & Lig).PasteSpecial Paste:=xlPasteValuesAndNumberFormats
[COLOR="red"]wsOutil.Range("A" & Lig).PasteSpecial Paste:=xlPasteFormats[/COLOR]Application.CutCopyMode = False
            
wsBase.Range("C" & CellBase.Row & ":G" & CellBase.Row).Copy
wsOutil.Range("D" & Lig).PasteSpecial Paste:=xlPasteValuesAndNumberFormats
[COLOR="Red"]wsOutil.Range("D" & Lig).PasteSpecial Paste:=xlPasteFormats[/COLOR]
Application.CutCopyMode = False

...
 

Discussions similaires