Utilisation dynamique d'un nom de feuille

Bonjour à tous !

Je fais face à un soucis dans du code VBA et je me retrouve incapable de le résoudre (et ce depuis des heures )

L'idée du document Excel en question est simple : afficher dans une feuille précise ("Synthèse UKC") une range de cellule en fonction de ce que l'utilisateur sélectionnera dans trois combobox.

Le premier combobox ("ChoixAnalyse") permet de sélectionner la feuille.

Le second combobox ("ChoixRisque") permet de selectionner quelles colonnes on veut sélectionner

Enfin le troisième permet ("ChoixScenario") de sélectionner les lignes voulues.

Pour récupérer le nom de la feuille voulue, j'utilise un Select Case.

Pour sélectionner les colonnes et lignes de cette feuille, je me base sur leur index dans les combobox (ce que je veux afficher dans "Synthèse UKC" est tjs de la même taille).

Private Sub CommandButton1_Click()
Dim IndexAnalyse As Long
Dim IndexRisque As Integer
Dim IndexScenario As Integer
Dim SetAnalyse As String
Dim SetRisque As Integer
Dim SetScenario As Integer
Dim SetRisqueFinal As Integer
Dim SetScenarioFinal As Integer
Dim MyRange As Range
Dim MyRange2 As String
Dim i As Integer

''Ici je récupère les index
IndexAnalyse = ChoixAnalyse.ListIndex
IndexRisque = ChoixRisque.ListIndex
IndexScenario = ChoixScenario.ListIndex

''Ici mon Select Case qui me permet de lier l'index du combobox "Choix Analyse" avec le nom des feuilles
Select Case IndexAnalyse
    Case 0
        SetAnalyse = "AR1"

    Case 1
        SetAnalyse = "AR2"

    Case 2
        SetAnalyse = "AR3"

    Case 3
        SetAnalyse = "AR4"

    Case 4
       SetAnalyse = "AR5"
End Select

''Ces deux prochaines lignes me permettent de contourner le problème des index commençant à 0
SetIntRisque = ChoixRisque.ListIndex + 1
SetIntScenario = ChoixScenario.ListIndex + 1

''Ces lignes me permettent de récupérer la position des cellules voulues
SetRisque = SetIntRisque * 9
SetScenario = SetIntScenario * 20
SetRisqueFinal = SetRisque + 8
SetScenarioFinal = SetScenario + 20

''Ces deux lignes me permettent de copier/coller la sélection voulue
Sheets(SetAnalyse).Range(Cells(SetRisque , SetScenario), Cells(SetRisqueFinal, SetScenario)).Copy
Sheets("Synthèse UKC").Range("E6").PasteSpecial Paste:=xlPasteValues

Comme vous vous en doutez, ça ne fonctionne pas...

J'ai une erreur d'exécution 1004 : Erreur définie par l'application ou par l'objet.

Avez-vous une idée de comment résoudre ce problème?

J'ai creusé ce forum mais je n'ai pas trouvé la réponse à ma question...

Merci à ceux qui prendront le temps de me lire

Lactose

19draftforum.xlsm (90.87 Ko)

Bonjour,

si tu passes pas liste index pour les lignes et colonnes pourquoi ne pas faire de même pour le nom de la feuilles puisqu'elles sont toutes sur le même modèle ?

Dim Nomfeuille as string

Nomfeuille="AR" & ChoixAnalyse.ListIndex + 1

Bonjour,

Merci de votre réponse

J'ai bien modifié selon votre conseil (en effet, c'est bien moins long qu'un Select Case ).

Cependant, c'est bien cette ligne ci-dessous qui me pose soucis lors du dégogage :

Sheets(Nomfeuille).Range(Cells(SetRisque, SetScenario), Cells(SetRisqueFinal, SetScenario)).Copy

Auriez-vous une idée ?

Merci

Bonjour,

Je vois pas trop le codage avec tous ces noms de variable.

C'est une cellule ou une plage de cellules que tu souhaites copier ?

Rechercher des sujets similaires à "utilisation dynamique nom feuille"