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 :

regenere mes fiches en changement d'annee [XL-2013]


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Mars 2015
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mars 2015
    Messages : 110
    Points : 80
    Points
    80
    Par défaut regenere mes fiches en changement d'annee
    Bonjour j'ai crée un petit fichier qui permet de crée des fiches par intermédiaire d'un modèle

    tous les ans nous refaisons l'ensemble des fiches ,je voudrais amélioré mon système
    je voudrais a partir du ficher existant de duplique l’ensemble de mes onglets "tableaux et fiches" et donc de modifier partout ou j'ai Année a 20 mettre l’Anne suivante exemple 21

    je ne sais pas par ou commencer

    merci de votre aide

    ci-joints mon fichier pour que vous voyer les macros différentes
    Fichiers attachés Fichiers attachés

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 769
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 769
    Points : 28 629
    Points
    28 629
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Sans plus d'informations, il est difficile d'apporter une réponse pertinente mais vous pourriez déjà prévoir l'année traitée en paramètre dans le modèle dans une feuille dédiée aux paramètres (cellule ou plage nommée)
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Membre régulier
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Mars 2015
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mars 2015
    Messages : 110
    Points : 80
    Points
    80
    Par défaut
    Citation Envoyé par Philippe Tulliez Voir le message
    Bonjour,
    Sans plus d'informations, il est difficile d'apporter une réponse pertinente mais vous pourriez déjà prévoir l'année traitée en paramètre dans le modèle dans une feuille dédiée aux paramètres (cellule ou plage nommée)
    merci votre réponse
    mais l’Année traiter un déjà un paramètre (saisie manuel) ,mon programme a été conçu pour crée fiche par fiche et les modifier indépendamment et non de modifier ou de traiter un groupe de fiche
    c est pour cela que je fais appel a votre expérience dans ce domaine pour pouvoir modifier tout mes fiches en même temps sur un seul paramètre .
    encore merci de vos conseil

  4. #4
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 183
    Points : 5 515
    Points
    5 515
    Par défaut
    Bonjour,

    Solution partielle, permettant d'adapter tous les onglets nommés "ROA_...":
    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 NouvelleAnnee()
        Dim wSh As Worksheet, kAn As Integer, kAnS As Integer
        For Each wSh In Worksheets
            If wSh.Name Like "ROA_*" Then
                With wSh
                    kAn = Mid(.Name, 5, 2)          '--- n° année
                    kAnS = kAn + 1                  '--- n° année suivante
                    .Name = Replace(.Name, "ROA_" & kAn, "ROA_" & kAnS) '--- change nom de l'onglet
                    .Range("B6") = DateAdd("yyyy", 1, .Range("B6"))     '--- change date en B6
                    If .Range("F6") <> "" Then
                        .Range("F6") = .Range("F6") + 1                 '--- change F6
                    End If
                End With
            End If
        Next wSh
    End Sub
    Attention à faire cela sur une copie du fichier actuel!
    Cordialement.

  5. #5
    Membre régulier
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Mars 2015
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mars 2015
    Messages : 110
    Points : 80
    Points
    80
    Par défaut
    [QUOTE=EricDgn;11610356]Bonjour,

    Merci du travail ,il me reste a réaliser un bout de programme pour renommer les fiches dans mes deux tableaux et en eau a droite de chaque fiche
    si tu a des astuces je prend
    encore merci

  6. #6
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 183
    Points : 5 515
    Points
    5 515
    Par défaut
    Attention à la ligne 9.
    Cordialement.

    en haut à droite:

  7. #7
    Membre régulier
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Mars 2015
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mars 2015
    Messages : 110
    Points : 80
    Points
    80
    Par défaut
    Citation Envoyé par EricDgn Voir le message
    Attention à la ligne 9.
    Cordialement.

    en haut à droite:
    merci mais j'ai pas compris

  8. #8
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 183
    Points : 5 515
    Points
    5 515
    Par défaut
    La cellule K1 est égale au nom de l'onglet, à mettre en ligne 13 par exemple.
    Cordialement.

  9. #9
    Membre régulier
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Mars 2015
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mars 2015
    Messages : 110
    Points : 80
    Points
    80
    Par défaut
    Citation Envoyé par EricDgn Voir le message
    La cellule K1 est égale au nom de l'onglet, à mettre en ligne 13 par exemple.
    Cordialement.
    BONJOUR
    J'ai compris
    mais je n'arrive pas a compiler dans la même macro le changement de mon année dans mes tableau;
    tableau recap "00-recap" même identification que l'onglet mais en colonne b
    tableau recap "00-recap" changer l’année en colonne mais en colonne BG
    tableau presentation recap "02-recap" même identification que l'onglet mais en colonne b

    merci de votre aide
    cordialement

  10. #10
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 183
    Points : 5 515
    Points
    5 515
    Par défaut
    Bonjour,

    Ceci pourrait sans doute convenir.
    A vérifier ... toujours sur une copie du fichier original!
    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
    Option Explicit
     
    Sub NouvelleAnnee()
        Dim wSh As Worksheet, kAn As Integer, kAnS As Integer, kR As Long
        For Each wSh In Worksheets
            If wSh.Name Like "ROA_*" Then
                With wSh
                    kAn = Mid(.Name, 5, 2)          '--- n° année
                    kAnS = kAn + 1                  '--- n° année suivante
                    .Name = Replace(.Name, "ROA_" & kAn, "ROA_" & kAnS) '--- change nom de l'onglet
                    .Range("B6") = DateAdd("yyyy", 1, .Range("B6"))     '--- change date en B6
                    If .Range("F6") <> "" Then
                        .Range("F6") = .Range("F6") + 1                 '--- change F6
                    End If
                    .Range("K1") = .Name
                End With
            ElseIf wSh.Name = "00-Recap" Then
                With wSh
                    kAn = Right(.Range("D1").Value, 4)  '--- année en 4 chiffres
                    kAnS = kAn + 1
                    .Range("B6") = Replace(.Range("B6"), kAn, kAnS)
                    .Range("B6") = Replace(.Range("B6"), kAn + 3, kAnS + 3)
                    .Range("E9") = Replace(.Range("E9"), kAn, kAnS)
                    .Range("F9") = Replace(.Range("F9"), kAn, kAnS)
                    .Range("G9") = Replace(.Range("G9"), kAn, kAnS)
                    .Range("H9") = Replace(.Range("H9"), kAn, kAnS)
                    .Range("I9") = kAn + 2
                    .Range("J9") = kAn + 3
                    .Range("K9") = kAn + 4
                    kR = 10
                    kAn = kAn Mod 100                   '--- année en 2 chiffres
                    kAnS = kAn + 1
                    While .Range("B" & kR) <> ""
                        .Range("B" & kR) = Replace(.Range("B" & kR), "ROA_" & kAn, "ROA_" & kAnS)
                        If .Range("BC" & kR) <> "" Then
                            .Range("BC" & kR) = DateAdd("yyyy", 1, .Range("BC" & kR))
                        End If
                        .Range("BG" & kR) = kAnS
                        .Range("DB" & kR) = .Range("BA" & kR) & "_" & .Range("BG" & kR) & "_" & .Range("BB" & kR) & "_" & .Range("BZ" & kR)
                        If .Range("B" & kR) <> .Range("DB" & kR) Then
                            MsgBox "Anomalie sur la ligne " & kR & vbCrLf & _
                                    "en  B" & kR & ": " & .Range("B" & kR) & vbCrLf & _
                                    "en DB" & kR & ": " & .Range("dB" & kR) & vbCrLf & vbCrLf & _
                                    "Noter l'anomalie, la mise à jour va continuer.", _
                                    , "Anomalie dans feuille " & wSh.Name
                        End If
                        kR = kR + 1
                    Wend
                End With
            ElseIf wSh.Name Like "02-Pr*" Then
                '--- sans doute pas vraiment une bonne idée
                '--- il vaudrait mieux recopier directement de feuille "01-Recap"
                '--- exemple erreurs lignes 54 et 55
                With wSh
                    kAn = Right(.Range("B6").Value, 4) - 3 '--- année en 4 chiffres
                    kAnS = kAn + 1
                    .Range("B6") = Replace(.Range("B6"), kAn, kAnS)
                    .Range("B6") = Replace(.Range("B6"), kAn + 3, kAnS + 3)
                    .Range("E9") = Replace(.Range("E9"), kAn, kAnS)
                    .Range("F9") = Replace(.Range("F9"), kAn, kAnS)
                    .Range("G9") = kAn + 2
                    .Range("H9") = kAn + 3
                    .Range("I9") = kAn + 4
                     kR = 10
                    kAn = kAn Mod 100                   '--- année en 2 chiffres
                    kAnS = kAn + 1
                    While .Range("B" & kR) <> ""
                        .Range("B" & kR) = Replace(.Range("B" & kR), "ROA_" & kAn, "ROA_" & kAnS)
                        kR = kR + 1
                    Wend
                End With
            End If
        Next wSh
    End Sub
    Cordialement.

  11. #11
    Membre régulier
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Mars 2015
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mars 2015
    Messages : 110
    Points : 80
    Points
    80
    Par défaut
    [QUOTE=EricDgn;11611228]Bonjour,

    Ceci pourrait sans doute convenir.
    A vérifier ... toujours sur une copie du fichier original!

    MERCI tres beau travail sa marche super bien
    encore merci

  12. #12
    Membre régulier
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Mars 2015
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mars 2015
    Messages : 110
    Points : 80
    Points
    80
    Par défaut
    [QUOTE=cbredeche;11611249]
    Citation Envoyé par EricDgn Voir le message
    Bonjour,

    Ceci pourrait sans doute convenir.
    A vérifier ... toujours sur une copie du fichier original!

    MERCI tres beau travail sa marche super bien
    encore merci
    merci mais je me suis rendu compte que dans les element dans le tableau "00 recap" rien ne change

    merci de ton aide

  13. #13
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 183
    Points : 5 515
    Points
    5 515
    Par défaut
    Bonjour,

    Sur mon fichier, les dates ont bien été changées dans la feuille 00-recap. Les modifications sont traitées par les instructions qui se trouvent entre les lignes n°17 et n°49 de la macro proposée. Les _20_ deviennent des _21_, etc.

    Cordialement.

  14. #14
    Membre régulier
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Mars 2015
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mars 2015
    Messages : 110
    Points : 80
    Points
    80
    Par défaut
    Citation Envoyé par EricDgn Voir le message
    Bonjour,

    Sur mon fichier, les dates ont bien été changées dans la feuille 00-recap. Les modifications sont traitées par les instructions qui se trouvent entre les lignes n°17 et n°49 de la macro proposée. Les _20_ deviennent des _21_, etc.

    Cordialement.
    MERCI pour l'info pouvez vous m'envoyer votre fichier pour que je compare

  15. #15
    Membre régulier
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Mars 2015
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mars 2015
    Messages : 110
    Points : 80
    Points
    80
    Par défaut
    Citation Envoyé par cbredeche Voir le message
    MERCI pour l'info pouvez vous m'envoyer votre fichier pour que je compare
    après vérification de 20 a 21 cela fonctionne mais les Annee suivante 22 23 etc cela ne fonctionne pas dans le tableau 00-recap

  16. #16
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 769
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 769
    Points : 28 629
    Points
    28 629
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Comme je l'ai écrit plus haut.
    SI vous avez un modèle qui doit être utilisé annuellement un simple paramètre indiquant l'année en cours est suffisant et aucun code VBA n'est nécessaire.
    Si par contre un modèle une fois ouvert doit pouvoir être utilisé pour plusieurs années, il y a lieu d'imaginer d'autres paramètres qui doivent également pouvoir éviter des lignes de code VBA pour identifier l'année à traiter.
    C'est une simple question de bonne analyse de ses besoins
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  17. #17
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 183
    Points : 5 515
    Points
    5 515
    Par défaut
    Effectivement, il faut ajouter en ligne 21 cette instruction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
                    .Range("D1") = Replace(.Range("D1"), kAn, kAnS)
    et effectivement, comme le dit Philippe, il aurait été préférable d'avoir des noms utilisant un paramètre, mais bon, il est fréquent qu'on se lance sans vraiment savoir très exactement où l'on va.
    Cordialement.

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 03/01/2019, 09h23
  2. Réponses: 3
    Dernier message: 16/11/2011, 16h15
  3. TComboBox faire la correspondance enter les items et mes fiches
    Par koulkouz dans le forum Composants VCL
    Réponses: 3
    Dernier message: 17/03/2009, 15h09
  4. détécter changement dans fiche de saisie
    Par gregcat dans le forum Bases de données
    Réponses: 2
    Dernier message: 01/06/2006, 16h57
  5. Changement de mes tableaux en vecteur
    Par Bason_sensei dans le forum MFC
    Réponses: 11
    Dernier message: 22/10/2005, 18h24

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