Création d'une nouvelle feuille de calcul et sélection de celle-ci

NicolasHfr Messages postés 1 Date d'inscription lundi 3 août 2009 Statut Membre Dernière intervention 5 août 2009 - 5 août 2009 à 10:03
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 - 5 août 2009 à 21:27
Bonjour à tous,

Il me faut réaliser une application excel avec VBA dans laquelle à un moment, je crée une nouvelle feuille de calcul dont le nom est stocké dans la variable region. Pour ce qui est de ceci, je ne rencontre aucune difficulté. Le problème vient toutefois lorsque par la suite je dois la sélectionner pour l'initialiser.

Voici mon code :

Sub CommandButton3_Click()
region = "Amiens"
    With Worksheets.Add
    Worksheets(1).Name = region
    End With

    '
    '
    'On remplit le tableau
    '
    '
    
    '
    'Réinitialisation du tableau
    '
    
    Worksheets(region).Activate
    Cells.Select
    Selection.ClearContents
    Range("A2").Select
    ActiveCell.FormulaR1C1 = "Compte"
    Range("B2").Select
    ActiveCell.FormulaR1C1 = "Libellé"
    Range("C2").Select
    ActiveCell.FormulaR1C1 = "Nombre d'UOP"
    Range("D2").Select
    ActiveCell.FormulaR1C1 = "Coût unitaire"
    Range("E2").Select
    ActiveCell.FormulaR1C1 = "Coût total"
    Range("C1:E1").Select
    ActiveCell.FormulaR1C1 = "2008"
    Range("F1:H1").Select
    ActiveCell.FormulaR1C1 = "2011"
    Range("F2").Select
    ActiveCell.FormulaR1C1 = "Nombre d'UOP"
    Range("G2").Select
    ActiveCell.FormulaR1C1 = "Coût unitaire"
    Range("H2").Select
    ActiveCell.FormulaR1C1 = "Coût total"
    Range("I1:K1").Select
    ActiveCell.FormulaR1C1 = "2012"
    Range("I2").Select
    ActiveCell.FormulaR1C1 = "Nombre d'UOP"
    Range("J2").Select
    ActiveCell.FormulaR1C1 = "Coût unitaire"
    Range("K2").Select
    ActiveCell.FormulaR1C1 = "Coût total"
    Range("L1:N1").Select
    ActiveCell.FormulaR1C1 = "2013"
    Range("L2").Select
    ActiveCell.FormulaR1C1 = "Nombre d'UOP"
    Range("M2").Select
    ActiveCell.FormulaR1C1 = "Coût unitaire"
    Range("N2").Select
    ActiveCell.FormulaR1C1 = "Coût total"
    Range("O1:Q1").Select
    ActiveCell.FormulaR1C1 = "2014"
    Range("O2").Select
    ActiveCell.FormulaR1C1 = "Nombre d'UOP"
    Range("P2").Select
    ActiveCell.FormulaR1C1 = "Coût unitaire"
    Range("Q2").Select
    ActiveCell.FormulaR1C1 = "Coût total"
End Sub


J'ai donné à la variable la valeur "Amiens" dans le cadre d'un test. La feuille est bien créée, mais le déboggueur bloque à la ligne : Cells.Select


Erreur d'exécution '1004':
La méthode Select de la classe Range a échoué


Pourtant à partir de ce stade, il s'agit d'un code réalisé avec l'enregistreur de macros. Je ne comprends pas comment il peut entrainer une erreur.


Si quelqu'un peut m'aider, je lui en serai très reconnaissat. J'ai commencé à apprendre VBA avant hier seulement, Donc excusez moi si ma question est idiote...

Merci d'avance !

PS : J'utilise Excel 2002

1 réponse

NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
5 août 2009 à 21:27
Bonjour,

Déjà, nettoyage du code (et j'ai mis le code généré par la version 2003, ça doit fonctionner) :

Sub CommandButton3_Click()
    dim lName as string
    lName = "Amiens"
    With Sheets.Add
        .Name = lName 
        'On remplit le tableau
        .Select
        Range("A2").FormulaR1C1 = "Compte"
        Range("B2").FormulaR1C1 = "Libellé"
        Range("C2").FormulaR1C1 = "Nombre d'UOP"
        Range("D2").FormulaR1C1 = "Coût unitaire"
        Range("E2").FormulaR1C1 = "Coût total"
        Range("C1").FormulaR1C1 = "2008"
        Range("F1").FormulaR1C1 = "2011"
        Range("F2").FormulaR1C1 = "Nombre d'UOP"
        Range("G2").FormulaR1C1 = "Coût unitaire"
        Range("H2").FormulaR1C1 = "Coût total"
        Range("I1").FormulaR1C1 = "2012"
        Range("I2").FormulaR1C1 = "Nombre d'UOP"
        Range("J2").FormulaR1C1 = "Coût unitaire"
        Range("K2").FormulaR1C1 = "Coût total"
        Range("L1").FormulaR1C1 = "2013"
        Range("L2").FormulaR1C1 = "Nombre d'UOP"
        Range("M2").FormulaR1C1 = "Coût unitaire"
        Range("N2").FormulaR1C1 = "Coût total"
        Range("O1").FormulaR1C1 = "2014"
        Range("O2").FormulaR1C1 = "Nombre d'UOP"
        Range("P2").FormulaR1C1 = "Coût unitaire"
        Range("Q2").FormulaR1C1 = "Coût total"
End Sub


Essaye en cliquant sur "Debogage" si une erreur survient pour voir d'où vient l'erreur.

Mon site
0
Rejoignez-nous