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 :

Lancer automatiquement une macro aprés l'ouverture d'un classeur .CSV [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2010
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 11
    Par défaut Lancer automatiquement une macro aprés l'ouverture d'un classeur .CSV
    Bonjour,

    Je suis novice ici et ne comprend pas toujours les règles et usages des forums !!! Donc je m'excuse par avance si je ne procède pas comme il faut.

    Voila mon petit soucis, a l'ouverture d'un fichier .csv je dois systématiquement lancer une macro (que j'ai et qui fonctionne déjà)

    Avez vous une solution pour que cette macro se lance automatiquement quand j'ouvre un fichier .csv ?

    Je vous remercie par avance.

  2. #2
    Membre habitué
    Homme Profil pro
    Inscrit en
    Novembre 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2012
    Messages : 16
    Par défaut
    Bonjour,

    As-tu essayé de nommer ta macro: auto_open() ?

    Cdt,

  3. #3
    Expert confirmé
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 093
    Billets dans le blog
    20
    Par défaut
    Citation Envoyé par Tradul Voir le message
    Bonjour,

    As-tu essayé de nommer ta macro: auto_open() ?

    Cdt,
    Salut,
    CA ne peut pas marcher car c'est un fichier .csv donc qui ne contient pas de macro !


    En fait il faut que tu ais un classeur ouvert en permanence !! (soit perso.xls ou soit un .xla) en tout cas cela ne fonctionnera que si ce fichier est ouvert avant le .csv.

    dans le thisworkbook de ce fichier tu mets :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Private WithEvents App As Application
     
    Private Sub Workbook_Open()
        Set App = Application
    End Sub
     
    Private Sub App_WorkbookOpen(ByVal Wb As Workbook)
        If UCase(Right(Wb.Name, 4)) = ".CSV" Then
        ' là ton code 
        MsgBox "New Workbook: " & Wb.Name
        End If
    End Sub
    Have a nice day. Oliv'
    Votre réponse est peut être dans mon blog !
    https://www.developpez.net/forums/blogs/191381-oliv-/

  4. #4
    Membre habitué
    Homme Profil pro
    Inscrit en
    Novembre 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2012
    Messages : 16
    Par défaut
    Pour te donner d'autres idées,
    Tu peux essayer de faire un truc du genre :

    • macro en auto open ()
    • tu importes ton csv
    • tu executes le code que tu veux
    • tu exportes ton csv
    • tu peux fermer ton fichier excel ou consulte ton csv sur place

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2010
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 11
    Par défaut
    Bonsoir,

    Merci à vous deux, pour être trés honnête je ne comprend pas tout au langage VBA.

    En revanche, ma macro est déjà stockée dans mon "perso.xls", de cette façon je peux la relancer à chaque ouverture d'un nouveau classeur .csv

    Je viens donc de coller ton code "Oliv", en y ajoutant le miens !!! mais rien ne se passe.

    voici ce que cela donne :

    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
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    Private WithEvents App As Application
     
    Private Sub Workbook_Open()
        Set App = Application
    End Sub
     
    Private Sub App_WorkbookOpen(ByVal Wb As Workbook)
        If UCase(Right(Wb.Name, 4)) = ".CSV" Then
        ' là ton code
        Sub Correction_Caracteres_Speciaux()
    '
    ' Correction des Caracteres Speciaux dans les exports du site internet
    '
    ' Touche de raccourci du clavier: Ctrl+0
    '
    'a
        Cells.Replace What:="Ã", Replacement:="à", LookAt:=xlPart, SearchOrder _
            :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
     
    ' À
        Cells.Replace What:="à€", Replacement:="À", LookAt:=xlPart, SearchOrder _
            :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
     
    'c
        Cells.Replace What:="à§", Replacement:="ç", LookAt:=xlPart, SearchOrder _
            :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
     
     
    'e
        Cells.Replace What:="à©", Replacement:="é", LookAt:=xlPart, SearchOrder _
            :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
     
        Cells.Replace What:="è", Replacement:="è", LookAt:=xlPart, SearchOrder _
            :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
     
        Cells.Replace What:="à¨", Replacement:="è", LookAt:=xlPart, SearchOrder _
            :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
     
        Cells.Replace What:="à«", Replacement:="ë", LookAt:=xlPart, SearchOrder _
            :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
     
        Cells.Replace What:="ë", Replacement:="ë", LookAt:=xlPart, SearchOrder _
            :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
     
        Cells.Replace What:="ê", Replacement:="ê", LookAt:=xlPart, SearchOrder _
            :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
     
     
    'E
        Cells.Replace What:="É", Replacement:="E", LookAt:=xlPart, SearchOrder _
            :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
     
        Cells.Replace What:="àŠ", Replacement:="Ê", LookAt:=xlPart, SearchOrder _
            :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
     
        Cells.Replace What:="à‰", Replacement:="É", LookAt:=xlPart, SearchOrder _
            :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
     
        Cells.Replace What:="é", Replacement:="É", LookAt:=xlPart, SearchOrder _
            :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
     
     
    'i
        Cells.Replace What:="î", Replacement:="î", LookAt:=xlPart, SearchOrder _
            :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
     
        Cells.Replace What:="ï", Replacement:="ï", LookAt:=xlPart, SearchOrder _
            :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
     
        Cells.Replace What:="à®", Replacement:="î", LookAt:=xlPart, SearchOrder _
            :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
     
        Cells.Replace What:="à¯", Replacement:="ï", LookAt:=xlPart, SearchOrder _
            :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
     
     
    'o
        Cells.Replace What:="à¶", Replacement:="ö", LookAt:=xlPart, SearchOrder _
            :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
     
     
    'u
        Cells.Replace What:="à¼", Replacement:="ü", LookAt:=xlPart, SearchOrder _
            :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
     
        Cells.Replace What:="û", Replacement:="û", LookAt:=xlPart, SearchOrder _
            :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
     
    'Spéciaux
        Cells.Replace What:="°", Replacement:="°", LookAt:=xlPart, SearchOrder _
            :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
     
        Cells.Replace What:="’", Replacement:="'", LookAt:=xlPart, SearchOrder _
            :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
     
    ''
        Cells.Replace What:="\'", Replacement:="'", LookAt:=xlPart, SearchOrder _
            :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
     
     
    End Sub
        MsgBox "New Workbook: " & Wb.Name
        End If
    End Sub
    Pour faire simple, plusieurs fois par jour j'ouvre des fichiers .csv suite à une extraction depuis notre site internet.

    Celui-ci fait environ 69000 lignes et comporte beaucoup de caractères spéciaux, ma macro les corriges.

    Je voudrais donc juste qu'a l'ouverture d'un fichier .csv celle-ci s’exécute....

    J'ai essayé dans la matinée avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub Workbook_Open()
    Sub Correction_Caracteres_Speciaux()
    '
    ' Correction des Caracteres Speciaux dans les exports du site internet
    '
    ' Touche de raccourci du clavier: Ctrl+0
    'Puis la suite du code..........
     
    End Sub
    Mais j'ai l'impression quil l’exécute à l'ouverture d'excel, sans attendre que le fichier .csv soit ouvert.

    Je suis long mais j'ai peur de pas être très clair dans mes explications.

    Encore merci, en espérant ne pas vous avoir embêté.

    Julien

  6. #6
    Expert confirmé
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 093
    Billets dans le blog
    20
    Par défaut
    Salut,
    tu n'étais pas loin

    ps: pour que l'événement se déclenche il faut soit fermer puis réouvrir perso.xls soit lancer 1 fois Workbook_Open

    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
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
     
    Private WithEvents App As Application
     
    Private Sub Workbook_Open()
        Set App = Application
    End Sub
     
    Private Sub App_WorkbookOpen(ByVal Wb As Workbook)
        If UCase(Right(Wb.Name, 4)) = ".CSV" Then
        ' là ton code
    Call Correction_Caracteres_Speciaux
        MsgBox "New Workbook: " & Wb.Name
        End If
    End Sub
     
        Sub Correction_Caracteres_Speciaux()
    '
    ' Correction des Caracteres Speciaux dans les exports du site internet
    '
    ' Touche de raccourci du clavier: Ctrl+0
    '
    'a
        Cells.Replace What:="Ã", Replacement:="à", LookAt:=xlPart, SearchOrder _
            :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
     
    ' À
        Cells.Replace What:="à€", Replacement:="À", LookAt:=xlPart, SearchOrder _
            :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
     
    'c
        Cells.Replace What:="à§", Replacement:="ç", LookAt:=xlPart, SearchOrder _
            :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
     
     
    'e
        Cells.Replace What:="à©", Replacement:="é", LookAt:=xlPart, SearchOrder _
            :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
     
        Cells.Replace What:="è", Replacement:="è", LookAt:=xlPart, SearchOrder _
            :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
     
        Cells.Replace What:="à¨", Replacement:="è", LookAt:=xlPart, SearchOrder _
            :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
     
        Cells.Replace What:="à«", Replacement:="ë", LookAt:=xlPart, SearchOrder _
            :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
     
        Cells.Replace What:="ë", Replacement:="ë", LookAt:=xlPart, SearchOrder _
            :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
     
        Cells.Replace What:="ê", Replacement:="ê", LookAt:=xlPart, SearchOrder _
            :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
     
     
    'E
        Cells.Replace What:="É", Replacement:="E", LookAt:=xlPart, SearchOrder _
            :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
     
        Cells.Replace What:="àŠ", Replacement:="Ê", LookAt:=xlPart, SearchOrder _
            :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
     
        Cells.Replace What:="à‰", Replacement:="É", LookAt:=xlPart, SearchOrder _
            :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
     
        Cells.Replace What:="é", Replacement:="É", LookAt:=xlPart, SearchOrder _
            :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
     
     
    'i
        Cells.Replace What:="î", Replacement:="î", LookAt:=xlPart, SearchOrder _
            :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
     
        Cells.Replace What:="ï", Replacement:="ï", LookAt:=xlPart, SearchOrder _
            :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
     
        Cells.Replace What:="à®", Replacement:="î", LookAt:=xlPart, SearchOrder _
            :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
     
        Cells.Replace What:="à¯", Replacement:="ï", LookAt:=xlPart, SearchOrder _
            :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
     
     
    'o
        Cells.Replace What:="à¶", Replacement:="ö", LookAt:=xlPart, SearchOrder _
            :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
     
     
    'u
        Cells.Replace What:="à¼", Replacement:="ü", LookAt:=xlPart, SearchOrder _
            :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
     
        Cells.Replace What:="û", Replacement:="û", LookAt:=xlPart, SearchOrder _
            :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
     
    'Spéciaux
        Cells.Replace What:="°", Replacement:="°", LookAt:=xlPart, SearchOrder _
            :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
     
        Cells.Replace What:="’", Replacement:="'", LookAt:=xlPart, SearchOrder _
            :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
     
    ''
        Cells.Replace What:="\'", Replacement:="'", LookAt:=xlPart, SearchOrder _
            :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
     
     
    End Sub
    Have a nice day. Oliv'
    Votre réponse est peut être dans mon blog !
    https://www.developpez.net/forums/blogs/191381-oliv-/

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Février 2010
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 11
    Par défaut
    Bonsoir Oliv,

    Merci beaucoup pour ton aide, c'est parfait.

    J'ai plus qu'a réfléchir pour faire évoluer ma macro....

    Et résoudre d'autres petit soucis.

    Vraiment merci .

    Et peut être a bientôt.

    Julien

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 04/07/2010, 06h13
  2. Lancer une macro après un résultat donné par le Solver
    Par bluesun91 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 12/06/2010, 12h05
  3. [PPT-2000] lancer automatiquement une macro à l'ouverture
    Par Fred C dans le forum VBA PowerPoint
    Réponses: 2
    Dernier message: 30/04/2009, 10h44
  4. lancer automatiquement une macro
    Par raph07 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 30/11/2008, 19h35
  5. Réponses: 3
    Dernier message: 06/12/2007, 11h09

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