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 :

Remplacer des lignes dans un module par une macro. [XL-2019]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2018
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2018
    Messages : 35
    Par défaut Remplacer des lignes dans un module par une macro.
    Bonjour à Tous et Toutes.

    J’ai besoin de modifier 2 lignes dans 4 modules différents. (Je peux évidement mettre les 4 macros dans un seul et unique module).
    Voici mon problème : Chaque an, je change l’année dans la cellule E3 pour les 18 feuilles du classeur avec une simple macro. Très simple (module1).
    Dans les module 2, 3, 4 , je dois remplacer les 2 répertoires ainsi :

    C:\trav\trav1\2023 par C:\trav\trav1\ (la nouvelle année ici 2024).
    D:\trav\trav1\2023 par D:\trav\trav2\ (la nouvelle année ici 2024).

    Rien compliqué, mais ce classeur est utilisé par 21 personnes différentes et les feuilles pour certains ne sont pas les mêmes, les données demandées divergent.

    Donc, comme ils n’ont pas accès pour des raisons de sécurité aux codes Vba, je suis obligé 2 fois par an de modifier les codages soit : 21x4x2 = 168 manips.

    Est-il possible par une simple macro de créer sur les partitions le nouveau sous répertoire (ici 2024 ), avoir la confirmation, ensuite de modifier ces lignes ( emplacements 6 &7)dans les modules et de confirmer. Cela avec une seule macro.

    Je pourrais ainsi reprendre en insérant un seul module dans les 21 classeurs. Ensuite au moment venu, ils auraient la charge d’effectuer eux-mêmes la manip sans mon intervention.

    Merci pour votre aide , si cela est possible.

    RDBAL41

  2. #2
    Membre Expert Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2019
    Messages : 1 575
    Par défaut
    Bonjour,
    Déjà pour l'année tu peux utiliser la fonction Year(Date) qui te donnera la date de l'année.

    Pour le reste tu peux rajouter un onglet de configuration qui contiendra les informations pour chaque Environ("UserName"), et ainsi n'avoir besoin que d'une seule Macro.

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2018
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2018
    Messages : 35
    Par défaut
    Citation Envoyé par Thumb down Voir le message
    Bonjour,
    Déjà pour l'année tu peux utiliser la fonction Year(Date) qui te donnera la date de l'année.

    Pour le reste tu peux rajouter un onglet de configuration qui contiendra les informations pour chaque Environ("UserName"), et ainsi n'avoir besoin que d'une seule Macro.
    Merci mais j'avoue que je ne comprends pas comment faire.
    RDBAL41

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    223
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mali

    Informations forums :
    Inscription : Octobre 2007
    Messages : 223
    Par défaut
    Bonjour à tous.
    Dans mon fichier Comptabilité , je change d'exercice donc d'année en faisant quelques manipulations.
    Dans une feuille Config, faites un tableau récapitulatif des années et des répertoires.
    Ensuite récupérez l'année en cours et les répertoires correspondants.

    A l'aide des variables Repertoire_Cible1 et Repertoire_Cible2 vous pouvez écrire dans les répertoires en fonction de l'année en cours

    Repertoire_Cible1 = Feuil1.Range("C2")
    Repertoire_Cible2 = Feuil1.Range("D2")

    L'année en cours est toujours récupérée en B2

    J'espère que ceci pourra vous aider
    Fichiers attachés Fichiers attachés

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2018
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2018
    Messages : 35
    Par défaut
    -Bonjour ,
    Merci Thumb down & Niagala .

    Les 2 idées sont intéressantes et elles marchent.
    Mais ce n'est pas tout à fait ce que je recherche.
    Je vais voir si je peux les utiliser.

    En fait je cherche une macro qui modifie les 2 lignes "chemins" dans les macros modules existants en remplaçant l'année 2023 par 2024..
    Le tout évitant que quelqu'un "bricole" les répertoires inscrits dans les modules. Les personnes n'ont pas accès aux codes.
    Il me suffira de leur demander de créer un sous répertoire "2024" sur leur poste de travail, pendant que l'étiquette 2023 de leur classeur se change en 2024.
    Mais si je peux le faire avec cette macro, c'est encore mieux. Mais cela ils peuvent le faire.
    Merci encore
    RDBAL41.

  6. #6
    Membre Expert Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2019
    Messages : 1 575
    Par défaut
    un début de 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
    Sub test()
    MsgBox Environ("UserName")
    Dim Rep1 As String: Rep1 = "C:\trav\trav1\" & Year(Date) + 1
    Dim Rep2 As String: Rep2 = "D:\trav\trav2\" & Year(Date) + 1
    GererRep Rep1
    GererRep Rep2
    End Sub
    Sub GererRep(Path As String)
    Dim rp, nw As String, i As Integer
    rp = Split(Path & "\", "\")
    For i = 0 To UBound(rp) - 1
        If nw <> "" Then nw = nw & "/"
        nw = nw & rp(i)
        If Dir(nw, vbDirectory) = "" Then MkDir nw
    Next
    End Sub

  7. #7
    Membre Expert Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2019
    Messages : 1 575
    Par défaut
    Je comprends bien que tu n'as pas compris l'idée.
    En fait je cherche une macro qui modifie les 2 lignes "chemins" dans les macros modules existants en remplaçant l'année 2023 par 2024
    Ici l'idée est de créer le chemin au répertoire dynamiquement. Ça t'évitera de renommer tes module par programme Vu que ton code serra dynamique dans tes module !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Rep1 = "C:\trav\trav1\" & Year(Date) + 1 'Year(Date) + 1 donne 2024 pour cette année 2025 pour l'année prochaine etc.

  8. #8
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2018
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2018
    Messages : 35
    Par défaut
    Citation Envoyé par Thumb down Voir le message
    Je comprends bien que tu n'as pas compris l'idée.

    Ici l'idée est de créer le chemin au répertoire dynamiquement. Ça t'évitera de renommer tes module par programme Vu que ton code serra dynamique dans tes module !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Rep1 = "C:\trav\trav1\" & Year(Date) + 1 'Year(Date) + 1 donne 2024 pour cette année 2025 pour l'année prochaine etc.
    Bonsoir,
    Effectivement, je n'avais pas compris l'idée.
    C'est parfait et cela marche Nikel.
    Merci du coup de main.

    RDBAL41

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

Discussions similaires

  1. remplacer des lignes dans un fichier
    Par tipon20 dans le forum AIX
    Réponses: 4
    Dernier message: 29/10/2008, 09h43
  2. [Batch] inserer des ligne dans un prog par batch
    Par mirlidas dans le forum Scripts/Batch
    Réponses: 3
    Dernier message: 28/04/2007, 11h42
  3. Réponses: 2
    Dernier message: 08/02/2007, 10h20
  4. Recupérer des lignes dans un fichier ou une variable
    Par vince2005 dans le forum Langage
    Réponses: 12
    Dernier message: 29/09/2006, 18h46
  5. remplacer des espaces dans un champ par des zero
    Par yeep dans le forum Access
    Réponses: 4
    Dernier message: 08/10/2004, 09h41

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