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 :

VBA Arrêter de copier à chaque fin de mois


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    352
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2012
    Messages : 352
    Points : 182
    Points
    182
    Par défaut VBA Arrêter de copier à chaque fin de mois
    Bonjour,

    le fichier joint me permet de copier le contenu d'une feuille et me change le nom de cette feuille en ajoutant 1 à chaque fois. Les noms des feuilles représentent les jours du mois prédéfini à la feuille "mensuel1". Je voudrais trouver le code VBA qui me permettra d'arrêter d'ouvrir une nouvelle feuille si j'ai déjà atteint la fin du mois, prédéfinit sur la feuille "mensuel1". Par exemple je ne veux pas me retrouver avec une feuille nommée "32" si le mois n'a que 31 jours.

    je vous joints le fichierARRETE FIN DE MOIS.xlsm

    merci

  2. #2
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    Bonjour,

    montre nous le code que tu utilise pour définir le nom de ta feuille ( entre balises [CODE][/CODE] )

  3. #3
    Expert éminent
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Points : 6 871
    Points
    6 871
    Par défaut
    Bonjour,

    Une piste :
    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
     
    Sub Recup()
     
        Dim Fe As Worksheet
        Dim Plage As Range
        Dim NomFeuille As String
        Dim Derlig As Long
        Dim LaDate As Date
     
        With Worksheets(ActiveSheet.Name)
     
            'définie la plage a` recopier dans l'onglet de base
            Set Plage = .Range(.Cells(1, 1), .Cells(80, 40))
     
        End With
     
        Derlig = Worksheets("mensuel1").Range("B" & Rows.Count).End(xlUp).Row
     
        With ActiveSheet.Range("F1")
     
            LaDate = "01/" & Month(.Value) & "/" & Year(.Value)
     
        End With
     
        NomFeuille = Val(ActiveSheet.Name) + 1
     
        If CInt(NomFeuille) > Day(DateSerial(Year(LaDate), Month(LaDate) + 1, 1) - 1) Then
     
            MsgBox "Le dernier jour du mois est atteint !"
            Exit Sub
     
        End If
     
        Sheets.Add Before:=Sheets("mensuel1")    'créer un nouvel onglet qui sera placera juste avant l'onglet "mensuel"
        ActiveSheet.Name = NomFeuille
     
        With Worksheets(NomFeuille)
     
            'coller le contenu copié dans la nouvelle feuille créé a` partir de la cellule A1
            Plage.Copy .Range("A1")
     
        End With
     
    End Sub
    Hervé.

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2012
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2012
    Messages : 20
    Points : 33
    Points
    33
    Par défaut compare le Derlig avec NomFeuille et utilise goto
    Bonjour;

    tu dois que tu recalcul le Derlig avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Derlig = Worksheets("mensuel1").Range("B" & Rows.Count).End(xlUp).Row - 6
    et tu ajoute le if et goto
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    If NomFeuille > Derlig Then
          MsgBox " Vous ne pouvez pas ajouter cette journée..."
          GoTo annul:
          End If
    Voila le code complet:

    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
        Sub Recup()
        Dim Fe As Worksheet
        Dim Plage As Range
        Dim NomFeuille As String
        Dim feuilleinitiale As String
        Dim Derlig As Long
     
     
         feuilleinitiale = CStr(Val(ActiveSheet.Name))
     
          With Worksheets(feuilleinitiale)
            'définie la plage a` recopier dans l'onglet de base
           Set Plage = .Range(.Cells(1, 1), .Cells(80, 40))
     
           Derlig = Worksheets("mensuel1").Range("B" & Rows.Count).End(xlUp).Row - 6
     
          End With
     
          NomFeuille = CStr(Val(ActiveSheet.Name) + 1)
     
          If NomFeuille > Derlig Then
          MsgBox " Vous ne pouvez pas ajouter cette journée..."
          GoTo annul:
          End If
          Sheets.Add Before:=Sheets("mensuel1")    'créer un nouvel onglet qui sera placera juste avant l'onglet "mensuel"
         ActiveSheet.Name = NomFeuille
     
     
     
     
          With Worksheets(NomFeuille)
            'coller le contenu copié dans la nouvelle feuille créé a` partir de la cellule A1
           Plage.Copy .Range("A1")
          End With
     
     
    annul:
        End Sub
    bn chance

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

Discussions similaires

  1. [XL-2007] copier une plage pour chaque jour du mois
    Par breiz56 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 26/12/2010, 22h21
  2. [VBA-E] déclencher une macro a chaque fin d'ecriture dans une cellule
    Par k-eisti dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 24/04/2007, 19h45
  3. comment mettre un timedatepicker à 30 j fin de mois
    Par bertrand_declerck dans le forum Composants VCL
    Réponses: 5
    Dernier message: 19/07/2005, 21h07
  4. Combien ca fait à la fin du mois ?
    Par nebule dans le forum Emploi
    Réponses: 12
    Dernier message: 25/03/2005, 09h18
  5. gestion de date de fin de mois
    Par bzh56 dans le forum Bases de données
    Réponses: 4
    Dernier message: 14/01/2005, 10h15

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