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 :

Encore de la syntaxe


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 199
    Par défaut Encore de la syntaxe
    Hé oui j'ai encore un problème de syntaxe que je n'arrive pas à comprendre
    Pourtant j'ai regardé les structure sur les forum et tuto mais ca ne marche tjs pas
    Le pb est sur le select
    Voila 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
     
    Sub Copie()
    Dim i, z
    z = InputBox("Nombre de copies ", "Copie")
    For i = 1 To z
        Sheets("Janvier").Copy After:=Sheets(i)
     
        Select Case i
            Case 1
                ActiveSheet.Name = "Fevrier"
            Case Else
                ActiveSheet.Name = "Error"
        End Select
     
    Next i
     
    End Sub
    Merci d'avance

  2. #2
    Membre émérite Avatar de sabzzz
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 748
    Par défaut
    bonjour debo41,

    tu ne peut pas nommer 2 feuilles par le même nom

    remplace
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
            Case Else
                ActiveSheet.Name = "Error"
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
            Case Else
                ActiveSheet.Name = "Error " & i

  3. #3
    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,

    C'est plus un probleme de conception que de synthaxe...

    Ici tu demandes combien de fois copier la feuille Janvier
    A la 1ere copie tu nommes la feuille en fevrier
    et pour toutes les autres tu veux nommer les feuilles en Error
    donc la 1ere fois ca va passer mais la 2eme il y aura une erreur vu que la feuille Error existe deja.

    Que veux tu faire exactement?

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 199
    Par défaut
    Je veux copier la feuille Janvier et la renommer en février puis en mars puis...

    J'ai essayé un code comme ça mais ca ne marche pas
    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
     
    Sub Copie()
    Dim i, z
    z = InputBox("Nombre de copies ", "Copie")
    For i = 1 To z
        Sheets("Janvier").Copy After:=Sheets(i)
     
        Select Case i
            Case 1
                ActiveSheet.Name = "Fevrier"
            Case 2
                ActiveSheet.Name = "Mars"
            Case 3
                ActiveSheet.Name = "Avril"
            Case 4
                ActiveSheet.Name = "Mai"
            Case 5:
                ActiveSheet.Name = "Juin"
            Case 6
                ActiveSheet.Name = "Juillet"
            Case 7
                ActiveSheet.Name = "Aout"
            Case 8
                ActiveSheet.Name = "Septembre"
            Case 9
                ActiveSheet.Name = "Octobre"
            Case 10
                ActiveSheet.Name = "Novembre"
            Case 11
                ActiveSheet.Name = "Decembre"
            Case Else
                ActiveSheet.Name = "Error"
        End Select
     
    Next i
     
    End Sub

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

    Ci joint une correction avec un minimum de controles.
    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
    Sub Copie()
        Dim i As Byte
        Dim z As String
     
        z = InputBox("Nombre de copies ", "Copie")
     
        If IsNumeric(z) Then
            If CLng(z) >= 1 And CLng(z) <= 11 Then
                For i = 1 To CByte(z)
                    Sheets("Janvier").Copy After:=Sheets(i)
     
                    ActiveSheet.Name = Application.WorksheetFunction.Proper(Format("01/" & i + 1 & "/2010", "mmmm"))
                Next i
            End If
        End If
    End Sub
    Je n'ai pas verifier si les feuilles existent deja...

  6. #6
    Membre émérite Avatar de sabzzz
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 748
    Par défaut
    bonjour debo41,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub Copie()
    Dim i, z
    z = InputBox("Nombre de copies ", "Copie")
    For i = 2 To z
        Sheets("Janvier").Copy After:=Sheets(Sheets.Count)
        Select Case i
            Case 2 To 12
                ActiveSheet.Name = Application.Proper(Format(DateSerial(1, i, 1), "mmmm"))
            Case Else
                ActiveSheet.Name = "Error" & i
        End Select
    Next i
    End Sub
    ou bien celle-ci, si tu ne veut pas de feuille en surplus.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub Copie2()
    Dim i, z
    z = InputBox("Nombre de copies ", "Copie")
    For i = 2 To z
        Sheets("Janvier").Copy After:=Sheets(Sheets.Count)
        If i <= 12 Then ActiveSheet.Name = Application.Proper(Format(DateSerial(1, i, 1), "mmmm"))
    Next i
    End Sub

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 199
    Par défaut
    Merci
    Ca marche

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

Discussions similaires

  1. Programmer encore en VB 6 c'est pas bien ? Pourquoi ?
    Par Nektanebos dans le forum Débats sur le développement - Le Best Of
    Réponses: 85
    Dernier message: 10/03/2009, 15h43
  2. Encore un souci de syntaxe
    Par santacrus dans le forum VBA Access
    Réponses: 9
    Dernier message: 09/09/2008, 07h47
  3. [MySQL] (Encore une) Erreur de syntaxe MySQL
    Par n1n0x dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 14/04/2008, 19h30
  4. encore un pb de syntax
    Par damien40 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 19/07/2007, 16h25
  5. [Requete] Erreur de syntaxe, mais encore ?
    Par soforever dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 30/04/2007, 14h34

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