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 :

Toujours un problème dans le changement de mot dans une macro


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
    Ressources humaines
    Inscrit en
    Octobre 2015
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2015
    Messages : 54
    Par défaut Toujours un problème dans le changement de mot dans une macro
    Bonjour

    Je n'y comprend rien. J'avais pourtant résolu mon problème de changement de mot dans ma macro et le problème est réaparu

    je vous poste mon code, en espérant que vous soyez capable de résoudre mon problème Merci à l'avance.

    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
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
     
    Sub generer_fichier()
    '
    ' Generer_pages Macro.
    '
     
     
     
    Const Accents As String = "àâäåçéèêëîïôöùûüÈÉÊËÀÁÂÃÄÅÙÚÛÜ- ,"
    Const Normaux As String = "aaaaceeeeiioouuuEEEEAAAAAAUUUU___"
     
     
        Dim c As Range, DerLigne As Integer, i As Byte
        Dim Ancien As String, Nouveau As String, Cible As String
        Dim VBComp As VBComponent
        Dim b As Integer
        Dim wbk As Workbook
        Dim w As Integer
        Dim Module As Object
     
     
        Sheets("Menu").Select
        DerLigne = Range("A65536").End(xlUp).Row
        For Each c In Range("A2:A" & DerLigne)
            For w = 1 To Len(Accents)
                c.Value = Replace(c.Value, Mid(Accents, w, 1), Mid(Normaux, w, 1))
            Next w
        Next c
     
     
        Sheets("Menu").Select
        ' Déterminer combien d'agent sur la feuille Menu
        FinalAgent = Range("A65000").End(xlUp).Row
     
        ' Loop pour chaque agent
        For x = 2 To FinalAgent
     
            Sheets("Menu").Select
            ThisAgent = Range("A" & x).Value
     
    'Copie des feuilles
     
            Application.ScreenUpdating = False
            ThisWorkbook.Sheets(Array("Janvier", "Admin_Janvier", "Fevrier", "Admin_Fevrier", "Mars", "Admin_Mars", "Avril", "Admin_Avril", "Mai", "Admin_Mai", "Juin", "Admin_Juin", "Juillet", "Admin_Juillet", "Aout", "Admin_Aout", "Septembre", "Admin_Septembre", "Octobre", "Admin_Octobre", "Novembre", "Admin_Novembre", "Decembre", "Admin_Decembre", "AGT", "SGT")).Copy        'adapte les noms des feuilles
     
     
    'Céation du nouveau fichier et enregistrement
            Set wbk = ActiveWorkbook
     
     
        Ancien = "New_Agt"
        Nouveau = "ThisAgent"
     
           For Each VBComp In wbk.VBProject.VBComponents
            With VBComp.CodeModule
                If VBComp.CodeModule.Name <> "AfficheMacrosActiveworkbook" Then
                    For b = 1 To VBComp.CodeModule.CountOfLines
                        Cible = VBComp.CodeModule.Lines(b, 1)
                        Cible = Replace(Cible, Ancien, Nouveau)
                        VBComp.CodeModule.ReplaceLine b, Cible
                    Next b
                End If
            End With
        Next VBComp
     
     
     
     
     
            Application.DisplayAlerts = False
            wbk.SaveAs ThisWorkbook.Path & "\" & ThisAgent & ".xlsm", FileFormat:=xlOpenXMLWorkbookMacroEnabled
     
     
     
     
     
     
    Application.DisplayAlerts = True
     
     
     
    wbk.Close
    Set wbk = Nothing
     
     
        Next x
     
     
     
    Application.ScreenUpdating = False
     
        Sheets("Menu").Select
        MsgBox ("Opération terminée.")
    End Sub
    Merci

  2. #2
    Membre éprouvé
    Homme Profil pro
    Chargé d'études RH
    Inscrit en
    Août 2014
    Messages
    162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Chargé d'études RH
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2014
    Messages : 162
    Par défaut
    Bonjour,

    Quel est le mot qui change ?


    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
    Sub generer_fichier()
    '
    ' Generer_pages Macro.
    '
    Application.ScreenUpdating = False '=> A placer en début de macro.
    Const Accents As String = "àâäåçéèêëîïôöùûüÈÉÊËÀÁÂÃÄÅÙÚÛÜ- ,"
    Const Normaux As String = "aaaaceeeeiioouuuEEEEAAAAAAUUUU___"
        Dim c As Range, DerLigne As Integer, i As Byte
        Dim Ancien As String, Nouveau As String, Cible As String
        Dim VBComp As VBComponent
        Dim b As Integer
        Dim wbk As Workbook
        Dim w As Integer
        Dim Module As Object
     
        Sheets("Menu").Select '=> Est ce vraiment nécessaire ?
        DerLigne = Range("A65536").End(xlUp).Row
        For Each c In Range("A2:A" & DerLigne)
            For w = 1 To Len(Accents)
                c.Value = Replace(c.Value, Mid(Accents, w, 1), Mid(Normaux, w, 1))
            Next w
        Next c
        Sheets("Menu").Select '=> Encore la même ligne ?!
        ' Déterminer combien d'agent sur la feuille Menu
        FinalAgent = Range("A65000").End(xlUp).Row
        ' Loop pour chaque agent
        For x = 2 To FinalAgent
            Sheets("Menu").Select '=> Encore la même ligne ?!
            ThisAgent = Range("A" & x).Value
    'Copie des feuilles
            ThisWorkbook.Sheets(Array("Janvier", "Admin_Janvier", "Fevrier", "Admin_Fevrier", "Mars", "Admin_Mars", "Avril", "Admin_Avril", "Mai", "Admin_Mai", "Juin", "Admin_Juin", "Juillet", "Admin_Juillet", "Aout", "Admin_Aout", "Septembre", "Admin_Septembre", "Octobre", "Admin_Octobre", "Novembre", "Admin_Novembre", "Decembre", "Admin_Decembre", "AGT", "SGT")).Copy        'adapte les noms des feuilles
     'Céation du nouveau fichier et enregistrement
            Set wbk = ActiveWorkbook
        Ancien = "New_Agt"
        Nouveau = "ThisAgent"
           For Each VBComp In wbk.VBProject.VBComponents
            With VBComp.CodeModule
                If VBComp.CodeModule.Name <> "AfficheMacrosActiveworkbook" Then
                    For b = 1 To VBComp.CodeModule.CountOfLines
                        Cible = VBComp.CodeModule.Lines(b, 1)
                        Cible = Replace(Cible, Ancien, Nouveau)
                        VBComp.CodeModule.ReplaceLine b, Cible
                    Next b
                End If
            End With
        Next VBComp 
    Application.DisplayAlerts = False
    wbk.SaveAs ThisWorkbook.Path & "\" & ThisAgent & ".xlsm", FileFormat:=xlOpenXMLWorkbookMacroEnabled
    Application.DisplayAlerts = True
    wbk.Close
    Set wbk = Nothing
         Next x
        Sheets("Menu").Select '=> Encore la même ligne ?!
    Application.ScreenUpdating = True '=> A placer à la fin et il faut mettre "True"
    MsgBox ("Opération terminée.")
    End Sub

  3. #3
    Membre averti
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Octobre 2015
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2015
    Messages : 54
    Par défaut
    Le mot New_AGT doit être remplacé par ThisAgent dans tout mon projet de mon nouveau classeur

    Merci de ton aide

  4. #4
    Membre émérite
    Homme Profil pro
    Directeur
    Inscrit en
    Avril 2003
    Messages
    724
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur

    Informations forums :
    Inscription : Avril 2003
    Messages : 724
    Par défaut
    Salut,


    Pourquoi dois tu changer un mot dans le module de code?
    Tu es sur que tu ne peux pas le faire d'une façon plus simple?
    Par exemple, en mettant ce nom dans une constante, ou en le lisant sur une feuille de calcul?
    Cordialement,

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Appart que tu n' utilises pas l'option vbcompart pour les majuscules et les minuscules!
    Place toi dans les parenthèses de replace( et appuis en même temps sur [Ctrl] et la barre d'espaces!

  6. #6
    Membre averti
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Octobre 2015
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2015
    Messages : 54
    Par défaut
    En fait ThisAgent est une variable qui est changeante. Alors quand je crée une nouveau classeur New_AGT doit être remplacé par la variable ThisAgent.

    Il n'est donc pas possible de cibler une cellule en particulier.

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

Discussions similaires

  1. Problème de l'existance de mot dans un fichier
    Par khalija dans le forum NetBeans
    Réponses: 0
    Dernier message: 17/04/2012, 12h22
  2. Changement de mots dans un txt
    Par oliv27400 dans le forum MATLAB
    Réponses: 6
    Dernier message: 12/07/2010, 18h19
  3. Réponses: 3
    Dernier message: 11/03/2010, 10h36
  4. [DataGridView] Bug dans le changement de couleur d'une ligne
    Par AsPrO dans le forum Windows Forms
    Réponses: 8
    Dernier message: 22/07/2008, 23h38
  5. Réponses: 2
    Dernier message: 08/10/2007, 10h35

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