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

Excel Discussion :

Macro création d'une fiche à partir d'un modèle + ordre


Sujet :

Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Macro création d'une fiche à partir d'un modèle + ordre
    Bonjour à tous,

    J'essaye de créer une macro qui permet en appuyant sur un bouton de créer une feuille à partir d'un modèle qui aura un numéro en nom et qui sera classée directement par ordre croissant.

    Je ne sais pas si je suis clair...

    Le code suivant me donne presque le resultat escompté sauf que le classement par ordre des numéros ne s'effectue pas et change complètement l'ordre de départ mettant la feuille d'accueil de paramètres à la fin ...

    Voici le 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
    Sub creerfeuille()
    Dim numcpte As String
    Dim libel As String
    Dim trouve As Boolean
    Dim I As Integer
    Dim J As Integer
     
     
    'personnalisation de cette nouvelle feuille
    numcpte = InputBox("Numéro de compte?", "Saisie du numéro de compte")
     
        'pour s'assurer de la saisie
        While numcpte = ""
            MsgBox "veuillez entrer un numéro de compte!", vbOKOnly + vbExclamation
            numcpte = InputBox("Numéro de compte?", "Saisie du numéro de compte")
     
        Wend
     
        'si la feuille de ce compte existe déjà
        trouve = False
            For Each Sheet In Worksheets
                If Sheet.Name = numcpte Then
                trouve = True
                MsgBox "la feuille de ce compte existe déjà!", vbOKOnly + vbCritical
                End If
            Next Sheet
     
                If trouve = False Then
     
     
                'création d'une nouvelle feuille
     
    Worksheets("MODELE").Copy After:=Sheets(Worksheets.Count)
    Set MySheet = ActiveSheet
    With MySheet
       .Name = Worksheets("MODELE").Range("B2")
    End With
                'renommer la feuille
                    ActiveSheet.Name = numcpte
     
     
                'affectation n° de compte
                    ActiveSheet.Cells(7, 5) = numcpte
     
                'saisie du libellé
                 libel = InputBox("Libellé du compte?", "Nouveau compte")
     
                 'pour s'assurer de la saisie
                 While libel = ""
                    MsgBox "veuillez entrer le libellé du compte!", vbOKOnly + vbExclamation
                    libel = InputBox("Libellé du compte?", "Nouveau compte")
     
                 Wend
     
                'affectation libellé
                    ActiveSheet.Cells(8, 2) = libel
     
                'placer la feuille au bon endroit
                    For I = 1 To Sheets.Count
                        For J = 1 To I - 1
                            If UCase(Sheets(I).Name) < UCase(Sheets(J).Name) Then
                            Sheets(I).Move before:=Sheets(J)
                        Exit For
                            End If
                        Next J
                    Next I
     
     
                End If
     
    End Sub
    Avez-vous une solution à me proposer ?

    Cordialement,

  2. #2
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    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
    Sub creerfeuille()
     
    Dim numcpte As String
    Dim WS_Loc as Worksheet
     
    Loop
       numcpte = InputBox("Numéro de compte?", "Saisie du numéro de compte")
    Loop Until numcpte <> ""
     
    For Each WS_Loc In Worksheets
       If WS_Loc.Name = numcpte Then
          MsgBox "la feuille de ce compte existe déjà!", vbOKOnly + vbCritical
          Exit Sub
       End If
       If Val(WS_Loc.Name) > Val(numcpte) then Exit For
    Next WS_Loc
     
    If Val(WS_Loc.Name) > Val(numcpte) then WS_Loc = Worksheets(WS_Loc.Index - 1)
     
    Worksheets("MODELE").Copy After:=WS_Loc
    Je te laisse terminer le code avec la partie qui renseigne le contenu de la nouvelle feuille.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Bonjour Loic,

    J'ai un message d'erreur boucle sans do, je dois mettre un do quelque part mais où ? ...

    Mes connaissances sont très limités et je ne maitrise pas du tout les boucles.

  4. #4
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par JGUYO Voir le message
    J'ai un message d'erreur boucle sans do, je dois mettre un do quelque part mais où ? ...
    Ligne 6, changer loop en do.

    Mes connaissances sont très limités et je ne maitrise pas du tout les boucles.
    C'est un handicap qui peut être éliminé en quelques secondes. Il suffit d'ouvrir l'aide VBA Excel et de taper "loop" dans la case de recherche.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

Discussions similaires

  1. [XL-2010] Macro création automatique de feuille à partir d'un modèle
    Par JGUYO dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 17/07/2014, 12h18
  2. Création d'une vue à partir d'un modèle
    Par Herwin78800 dans le forum ASP.NET MVC
    Réponses: 2
    Dernier message: 20/06/2011, 18h31
  3. [c#]Création d'une texture à partir d'autres
    Par backfire dans le forum DirectX
    Réponses: 17
    Dernier message: 29/12/2005, 18h01
  4. [Net]Création d'une URL à partir d'une File
    Par maxvador dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 11/12/2005, 21h22
  5. Image popup d'une fiche à partir d'un TListImage
    Par FW-S dans le forum Composants VCL
    Réponses: 3
    Dernier message: 17/11/2002, 13h42

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