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 :

Probleme dans mes Case


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mai 2008
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 18
    Par défaut Probleme dans mes Case
    J'utilise les case pour trier mes feuilles dans un ordre bien precis.
    Le problème est que sauf pour certaines feuilles, les autres ne sont pas à leurs places.

    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
        For m = 1 To Worksheets.Count
     
            Sheets(m).Select
     
            VarEd = Sheets(m).Name
            NomEd = Right(VarEd, 3)
     
            Select Case NomEd
            Case "BAR"
                Sheets(m).Move before:=Sheets(5)
            Case "BEL"
                Sheets(m).Move before:=Sheets(6)
            Case "BES"
                Sheets(m).Move before:=Sheets(1)
            Case "EPI"
                Sheets(m).Move before:=Sheets(17)
            Case "GBN"
                Sheets(m).Move before:=Sheets(9)
            Case "GBS"
                Sheets(m).Move before:=Sheets(11)
            Case "LUN"
                Sheets(m).Move before:=Sheets(13)
            Case "MTB"
                Sheets(m).Move before:=Sheets(4)
            Case "NCY"
                Sheets(m).Move before:=Sheets(14)
            Case "NEU"
                Sheets(m).Move before:=Sheets(12)
            Case "PTM"
                Sheets(m).Move before:=Sheets(8)
            Case "PTR"
                Sheets(m).Move before:=Sheets(3)
            Case "REM"
                Sheets(m).Move before:=Sheets(16)
            Case "STD"
                Sheets(m).Move before:=Sheets(15)
            Case "TOU"
                Sheets(m).Move before:=Sheets(10)
            Case "VER"
                Sheets(m).Move before:=Sheets(7)
            Case "VES"
                Sheets(m).Move before:=Sheets(2)
     
            Case Else
                MsgBox ("Lieu d'Edition non connue du programme(" & NomEd & ")")
                Sheets(m).Move after:=Sheets(Worksheets.Count)
            End Select
        Next

    J'avoue que là je vois pas tellement ce qui ne va pas

    [edit] Erf, le pas à pas m'à fait comprendre ma connerie, Désolé du post

  2. #2
    Membre Expert Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 403
    Par défaut
    Salut,

    je ne crois pas que cela puisse fonctionner comme cela car :
    * par ce systeme, tu changes aussi le numéro d'ordre de tes feuilles; celle que tu mets avant la 5 devient la 5 et la 5 devient 6 et donc ta boucle ne sait pas suivre ce changement.
    Aussi, tu ne tiens pas compte du fait que la feuille est peut-être déja en place.

    Essaie peut-être ceci :


    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
     
        Dim swap as boolean
     
        Swap = True
     
    While swap
        Swap = false
        For m = Worksheets.Count to 1 step - 1
     
            Sheets(m).Select
     
            VarEd = Sheets(m).Name
            NomEd = Right(VarEd, 3)
     
            Select Case NomEd
            Case "BAR"
                if m <> 5 then
                   Sheets(m).Move before:=Sheets(5)
                   swap = true 
                   exit for
                endif
            Case ...
     
     
            Case Else
                MsgBox ("Lieu d'Edition non connue du programme(" & NomEd & ")")
                Sheets(m).Move after:=Sheets(Worksheets.Count)
            End Select
        Next
    Wend

  3. #3
    Membre averti
    Inscrit en
    Mai 2008
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 18
    Par défaut
    En fait j'ai rajouté un boucle autour de la boucle de base et c'est good.
    Par contre, je pense que ça fait pas très beau à voir pour quelqu'un qui s'y connait plus, et par ailleurs, ma macro entière doit mettre 30sec à s'executer donc ça n'arrange rien.
    Je vais voir avec ta version.

  4. #4
    Membre Expert Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 403
    Par défaut
    Salut,

    je n'ai testé ma solution mais elle me semble bonne.
    Je ne suis pas non plus spécialiste.

  5. #5
    Membre émérite
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    633
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 633
    Par défaut
    bonjour


    As tu plusieurs feuille qui commence par les même caractères pour utiliser ce style de code?

    car sinon tu pourrais utiliser dirrectement quelque chose comme ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("Feuil3").Move before:=Sheets("Feuil1")
    pour chaque feuille non

  6. #6
    Membre averti
    Inscrit en
    Mai 2008
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 18
    Par défaut
    Désolé du retard ^^

    J'ai environ un 20ène de feuille toutes commençant par "ER_" + Date(jjmmaa) + "_###"

    Exemple : "ER_260508_EPI"

    Sinon, vis à vis de ce que je veux faire, refaire une boucle autour convient.

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

Discussions similaires

  1. [XL-MAC 2011] probleme dans mes codes de devellopeur
    Par aurel971 dans le forum Conception
    Réponses: 8
    Dernier message: 20/05/2013, 12h51
  2. Probleme dans mes conditions pour VLOOKUP
    Par bentor22 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 15/02/2013, 17h04
  3. probleme dans mes favoris reseau
    Par bambi98 dans le forum Windows XP
    Réponses: 2
    Dernier message: 08/08/2008, 14h17
  4. Probleme dans mes tableaux
    Par jacko842 dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 02/01/2008, 13h41
  5. Probleme avec mes formulaire html dans mes pages web
    Par foungnigue dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 28/12/2005, 19h07

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