IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Réinitialisation d'un classeur au lancement de la macro [XL-2000]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 29
    Par défaut Réinitialisation d'un classeur au lancement de la macro
    Bonjour à tous!

    Je débute avec les macros Excel, et je suis confrontée à un petit soucis. J'ai créé une macro qui, à partir de la première feuille contenant 3 colonne, me fait toute une série de calculs dans la deuxième feuille, copie-colle la première colonne de la feuille 1 dans la troisième feuille, créé une quatrième et cinquième feuille pour y coller la deuxième et la troisième colonne.

    Jusque là tout va bien si je n'applique ma macro qu'une seule fois. Mais le soucis, c'est que si j'applique une deuxième fois la macro, les index ne collent plus, et débuggage... Et si je mets des Sheets("Feuil4").delete au début du code, cette fois c'est au premier lancement de la macro que ça plante...

    Je voudrais savoir s'il n'existe pas un code qui réinitialise le classeur à chaque lancement de la macro, mais tout en gardant la première feuille, car les données de celles ci sont les seules indispensables pour le reste des calculs.

    Je vous fais part de mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
     
    Sub Macro8()
     
    Dim tailleColonne As Integer
     
    '
    '    Sheets("Regime").Delete
    '    Sheets("Puissance").Delete
    '    Sheets("Conso").Delete
     
        Sheets("Feuil1").Select
        tailleColonne = Application.WorksheetFunction.CountA(Range("A2:A50000"))
        Cells(1, 1).Range("A2:B" & Range("A50000").End(xlUp).Row).Select
        Selection.Copy
        Sheets(2).Select
        Cells(tailleColonne + 1, 1).Select
        Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
            False, Transpose:=True
        Cells(1, tailleColonne + 1).Select
        Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
            False, Transpose:=False
     
        Cells(1, tailleColonne + 3).Range("A1:A" & tailleColonne).Select
        Selection.FormulaR1C1 = "1"
     
        Selection.Copy
        Cells(tailleColonne + 3, 1).Select
        Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
            False, Transpose:=True
     
        Cells(tailleColonne + 1, tailleColonne + 1).Range("A1:C3").Select
        Selection.FormulaR1C1 = "0"
     
        For i = 1 To tailleColonne
            For j = 1 To tailleColonne
                Cells(i, j).FormulaR1C1 = "=(((RC[" & tailleColonne - j + 1 & "] - R[" & tailleColonne - i + 1 & "]C) ^ 2)+((RC[" & tailleColonne - j + 2 & "] - R[" & tailleColonne - i + 2 & "]C)^2))* Log(((RC[" & tailleColonne - j + 1 & "] - R[" & tailleColonne - i + 1 & "]C) ^ 2)+((RC[" & tailleColonne - j + 2 & "] - R[" & tailleColonne - i + 2 & "]C)^2))"
            Next j
        Next i
     
        For k = 1 To tailleColonne
            For l = 1 To tailleColonne
                k = l
                Cells(k, l).FormulaR1C1 = "0"
            Next l
        Next k
     
        Sheets(3).Select
        Sheets(3).Name = "Regime"
     
        Sheets.Add
        Sheets(3).Name = "Puissance"
        Sheets("Puissance").Move After:=Sheets(4)
     
        Sheets.Add
        Sheets(4).Name = "Conso"
        Sheets("Conso").Move After:=Sheets(5)
     
     
        Sheets("Feuil1").Select
        Cells(1, 1).Range("A2:A" & Range("A50000").End(xlUp).Row).Select
        Selection.Copy
        Sheets("Regime").Select
        Cells(1, 1).Select
        Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
            False, Transpose:=False
     
        Sheets("Feuil1").Select
        Cells(1, 2).Range("A2:A" & Range("A50000").End(xlUp).Row).Select
        Selection.Copy
        Sheets("Puissance").Select
        Cells(1, 1).Select
        Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
            False, Transpose:=False
     
        Sheets("Feuil1").Select
        Cells(1, 3).Range("A2:A" & Range("A50000").End(xlUp).Row).Select
        Selection.Copy
        Sheets("Conso").Select
        Cells(1, 1).Select
        Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
            False, Transpose:=False
     
        Sheets("Feuil2").Name = "Coeffs"
     
    End Sub
    Merci d'avance!!

  2. #2
    Membre chevronné
    Inscrit en
    Décembre 2003
    Messages
    434
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 434
    Par défaut
    Salut,

    Tu trouveras ci-joint un exemple de suppression des feuilles du classeur actif
    sauf la feuil1:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
        Dim Sht As Worksheet
     
        ' on desactive les alertes (message lors de la suppression d'une feuille)
        Application.DisplayAlerts = False
            ' on boucle sur toutes les feuilles du classeur actif
            For Each Sht In Sheets
                ' si le nom de la feuille (mis en minuscule ici) n'est pas la feuille reference
                If LCase(Sht.Name) <> "feuil1" Then
                    ' on supprime la feuille
                    Sht.Delete
                End If
            Next
        ' on reactive les alertes
        Application.DisplayAlerts = True

  3. #3
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 29
    Par défaut
    Ca marche comme sur des roulettes, merci beaucoup pour ta réponse plus rapide que l'éclair!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2003] Problème VBA nouveau classeur et lancement macro
    Par john_mtp dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 01/06/2011, 22h25
  2. Réponses: 19
    Dernier message: 12/10/2007, 13h49
  3. Lancement d'une macro d'un autre classeur
    Par marsupilami34 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 19/06/2007, 10h31
  4. [VBA-E] Lancement de la macro avant l'ouverture des feuilles
    Par repié dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 15/02/2006, 16h07
  5. Réponses: 2
    Dernier message: 22/07/2002, 12h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo