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 :

Macro excel pour copier la mise en forme d'un document à plusieurs autres documents. [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Juillet 2015
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juillet 2015
    Messages : 57
    Points : 17
    Points
    17
    Par défaut
    Bonjour,

    Je suis très nouveau au niveau du VBA Excel. D'ailleurs, je suis nouveau à la programmation en tant que tel. Je désire faire une macro qui prendra la mise en forme de cellules spécifiques de mon document source et ouvrira et copiera automatiquement dans plusieurs autres documents dans le même dossier. Évidemment, j'ai l'idée mais une fois rendu au clavier, c'est autre chose

    Je vous demande donc conseil sur la façon dont je devrais m'y prendre... J'ai déjà fait un bout de chemin, c'est-à-dire que mes documents destinataires s'ouvrent, s'enregistrent et se ferment automatiquement. Je suis capable d'écrire dans les documents également... Mais copier/coller du contenu en gardant la mise en forme (je pense à un collage spécial), je n'y arrive pas.

    Vous remarquerez, c'est dans la partie 'Change cell value(s) in one worksheet in mybook' que je suis mélangé, le reste ça va je pense bien.
    Également, dans les définition de variables, il y a peut-être quelque chose qui cloche...

    Veuillez prendre note que ceci est mon premier programme alors allez-y doucement avec la critique s'il-vous-plaît

    Voici mon code :
    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
    108
    109
    110
    111
    112
    113
    114
    115
     
    Option Explicit
    Const Pass As String = "0179"
     
    Sub Example()
        Dim MyPath As String, FilesInPath As String
        Dim MyFiles() As String, Fnum As Long
        Dim mybook As Workbook
        Dim thisbook As Worksheet
        'Dim ActiveWorksheet As Worksheet
        Set thisbook = ActiveWorkbook.Sheets("Paramètres")
        Dim CalcMode As Long
        'Dim sh As Worksheet
        Dim ErrorYes As Boolean
     
        'Fill in the path\folder where the files are
        MyPath = "C:\Documents and Settings\apoirierrouillard\Bureau\Projet 6 MIC\PRODUCTS\template"
     
        'Add a slash at the end if the user forget it
        If Right(MyPath, 1) <> "\" Then
            MyPath = MyPath & "\"
        End If
     
        'If there are no Excel files in the folder exit the sub
        FilesInPath = Dir(MyPath & "*.xl*")
        If FilesInPath = "" Then
            MsgBox "No files found"
            Exit Sub
        End If
     
        'Fill the array(myFiles)with the list of Excel files in the folder
        Fnum = 0
        Do While FilesInPath <> ""
            Fnum = Fnum + 1
            ReDim Preserve MyFiles(1 To Fnum)
            MyFiles(Fnum) = FilesInPath
            FilesInPath = Dir()
        Loop
     
        'Change ScreenUpdating, Calculation and EnableEvents
        With Application
            CalcMode = .Calculation
            .Calculation = xlCalculationManual
            .ScreenUpdating = False
            .EnableEvents = False
        End With
     
        'Loop through all files in the array(myFiles)
        If Fnum > 0 Then
            For Fnum = LBound(MyFiles) To UBound(MyFiles)
                Set mybook = Nothing
                On Error Resume Next
                Set mybook = Workbooks.Open(MyPath & MyFiles(Fnum))
                On Error GoTo 0
     
                If Not mybook Is Nothing Then
     
     
     
                        'Change cell value(s) in one worksheet in mybook
                        On Error Resume Next
     
                        With thisbook
                        If .ProtectContents = True Then
                            .Unprotect Password:=Pass
                            .Range("G17:L36").Select
                            Selection.Copy
                        End If
                    End With
     
                        With mybook.Worksheets(1)
                        If .ProtectContents = True Then
                            .Unprotect Password:=Pass
                            .Range("G17:G36").PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
                            False, Transpose:=False
                            .Protect Password:=Pass
                        Else
                            .Range("G17:L36").Value = "erreur"
                            .Protect Password:=Pass
     
                        End If
     
                    End With
     
     
                    If Err.Number > 0 Then
                        ErrorYes = True
                        Err.Clear
                        'Close mybook without saving
                        mybook.Close savechanges:=False
                    Else
                        'Save and close mybook
                        mybook.Close savechanges:=True
                    End If
                    On Error GoTo 0
                Else
                    'Not possible to open the workbook
                    ErrorYes = True
                End If
     
            Next Fnum
        End If
     
        If ErrorYes = True Then
            MsgBox "There are problems in one or more files, possible problem:" _
                 & vbNewLine & "protected workbook/sheet or a sheet/range that not exist"
        End If
     
        'Restore ScreenUpdating, Calculation and EnableEvents
        With Application
            .ScreenUpdating = True
            .EnableEvents = True
            .Calculation = CalcMode
        End With
    End Sub
    Si quelqu'un peut m'aider ça serait super gentil

    Coordialement,

    Antoine

  2. #2
    Membre éclairé
    Avatar de tamtam64
    Homme Profil pro
    stagiaire developpement vba
    Inscrit en
    Mai 2012
    Messages
    456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : stagiaire developpement vba
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2012
    Messages : 456
    Points : 658
    Points
    658
    Billets dans le blog
    17
    Par défaut Salut
    Tu veux une macro pour copier la mise en forme d'une celulle? je peux te filer ca
    Allez le RC LEns

  3. #3
    Membre à l'essai
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Juillet 2015
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juillet 2015
    Messages : 57
    Points : 17
    Points
    17
    Par défaut Salut à toi
    Oui, enfin d'un groupe de cellules mais cela revient au même n'est-ce pas ?

    De plus, il faut que ma maccro s'intègre à mon code d'ouverture de fichiers dans un dossier cible. J'ai mon code plus haut, je sais pas si tu l'as lu et si ça t'aide ?

    Merci de la réponse,

  4. #4
    Membre éclairé
    Avatar de tamtam64
    Homme Profil pro
    stagiaire developpement vba
    Inscrit en
    Mai 2012
    Messages
    456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : stagiaire developpement vba
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2012
    Messages : 456
    Points : 658
    Points
    658
    Billets dans le blog
    17
    Par défaut je regre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        'applique un format
    Sub Formatage(ByRef MyRange As Range, ByRef MyRangeRef as range)
     
            MyRangeRef.copy MyRange PasteSpecial Paste:=xlPasteFormats
    End Su
    je regarde ca et j'adapte mon code si tu veux
    Allez le RC LEns

  5. #5
    Membre à l'essai
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Juillet 2015
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juillet 2015
    Messages : 57
    Points : 17
    Points
    17
    Par défaut Ce qui peut éclaircir le sujet
    Donc ce que je dois faire :

    J'ai un fichier A qui est ouvert. Je lance la macro, ce qui, en boucle, ouvre tous les fichiers X un par un d'un dossier cible. À chaque fichier X ouvert, ma macro va copier de G17 à L36 du fichier A et coller(spécial) dans le fichier X à la même place (G17 à L36). Ensuite enregistrer et fermer le fichier pour ouvrir le prochain, etc.

    Mes feuilles sont protégées donc il faut les déverrouiller aussi.


    Comme j'ai dit plus haut, la majeur partie est fonctionnelle, excepté le bout du copier coller d'un fichier à l'autre, je cherche la logique de jouer avec un fichier qu'on ne peut définir car il change (variable?)

  6. #6
    Membre éclairé
    Avatar de tamtam64
    Homme Profil pro
    stagiaire developpement vba
    Inscrit en
    Mai 2012
    Messages
    456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : stagiaire developpement vba
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2012
    Messages : 456
    Points : 658
    Points
    658
    Billets dans le blog
    17
    Par défaut
    Pardon je pensais que tu vouslais juste le format alors :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PasteSpecial Paste:=xlPasteAll
    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
    108
    109
    110
    111
    112
    113
    Option Explicit
     
    Const Pass As String = "0179"
     
    Sub Example()
        Dim MyPath As String, FilesInPath As String
        Dim MyFiles() As String, Fnum As Long
        Dim mybook As Workbook, thisbook As Worksheet
     
            'Dim ActiveWorksheet As Worksheet
        Set thisbook = ActiveWorkbook.Sheets("Paramètres")
        Dim CalcMode As Long
        'Dim sh As Worksheet
        Dim ErrorYes As Boolean
     
        'Fill in the path\folder where the files are
        MyPath = "C:\Documents and Settings\apoirierrouillard\Bureau\Projet 6 MIC\PRODUCTS\template"
     
        'Add a slash at the end if the user forget it
        If Right(MyPath, 1) <> "\" Then
            MyPath = MyPath & "\"
        End If
     
        'If there are no Excel files in the folder exit the sub
        FilesInPath = Dir(MyPath & "*.xl*")
        If FilesInPath = "" Then
            MsgBox "No files found"
            Exit Sub
        End If
     
        'Fill the array(myFiles)with the list of Excel files in the folder
        Fnum = 0
        Do While FilesInPath <> ""
            Fnum = Fnum + 1
            ReDim Preserve MyFiles(1 To Fnum)
            MyFiles(Fnum) = FilesInPath
            FilesInPath = Dir()
        Loop
     
        'Change ScreenUpdating, Calculation and EnableEvents
        With Application
            CalcMode = .Calculation
            .Calculation = xlCalculationManual
            .ScreenUpdating = False
            .EnableEvents = False
        End With
     
        'Loop through all files in the array(myFiles)
        If Fnum > 0 Then
            For Fnum = LBound(MyFiles) To UBound(MyFiles)
                Set mybook = Nothing
                On Error Resume Next
                Set mybook = Workbooks.Open(MyPath & MyFiles(Fnum))
                On Error GoTo 0
     
                If Not mybook Is Nothing Then
     
     
     
                        'Change cell value(s) in one worksheet in mybook
                        On Error Resume Next
     
                        With thisbook
                        If .ProtectContents = True Then
                            .Unprotect Password:=Pass
                            .Range("G17:L36").Copy
                        End If
                    End With
     
                        With mybook.Worksheets(1)
                        If .ProtectContents = True Then
                            .Unprotect Password:=Pass
                            .Range("G17:G36").PasteSpecial Paste:=xlPasteAll
                            .Protect Password:=Pass
                        Else
                            .Range("G17:L36").Value = "erreur"
                            .Protect Password:=Pass
     
                        End If
     
                    End With
     
     
                    If Err.Number > 0 Then
                        ErrorYes = True
                        Err.Clear
                        'Close mybook without saving
                        mybook.Close savechanges:=False
                    Else
                        'Save and close mybook
                        mybook.Close savechanges:=True
                    End If
                    On Error GoTo 0
                Else
                    'Not possible to open the workbook
                    ErrorYes = True
                End If
     
            Next Fnum
        End If
     
        If ErrorYes = True Then
            MsgBox "There are problems in one or more files, possible problem:" _
                 & vbNewLine & "protected workbook/sheet or a sheet/range that not exist"
        End If
     
        'Restore ScreenUpdating, Calculation and EnableEvents
        With Application
            .ScreenUpdating = True
            .EnableEvents = True
            .Calculation = CalcMode
        End With
    End Sub
    A priori ca marche t'as un msg d'erreur? donne le mois
    Allez le RC LEns

  7. #7
    Membre à l'essai
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Juillet 2015
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juillet 2015
    Messages : 57
    Points : 17
    Points
    17
    Par défaut Pas de message d'erreur
    Erreur '1004' : La méthode Select de la classe Range a échoué.

  8. #8
    Membre éclairé
    Avatar de tamtam64
    Homme Profil pro
    stagiaire developpement vba
    Inscrit en
    Mai 2012
    Messages
    456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : stagiaire developpement vba
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2012
    Messages : 456
    Points : 658
    Points
    658
    Billets dans le blog
    17
    Par défaut
    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
    Option Explicit
     
    Const Pass As String = "0179"
     
    Sub Example()
        Dim MyPath As String, FilesInPath As String
        Dim MyFiles() As String, Fnum As Long
        Dim mybook As Workbook, thisbook As Worksheet
     
            'Dim ActiveWorksheet As Worksheet
        Set thisbook = ActiveWorkbook.Sheets("Paramètres")
        Dim CalcMode As Long
        'Dim sh As Worksheet
        Dim ErrorYes As Boolean
     
        'Fill in the path\folder where the files are
        MyPath = "E:\VBAProjectCACIB\Projet3\20150605"
     
        'Add a slash at the end if the user forget it
        If Right(MyPath, 1) <> "\" Then
            MyPath = MyPath & "\"
        End If
     
        'If there are no Excel files in the folder exit the sub
        FilesInPath = Dir(MyPath & "*.xl*")
        If FilesInPath = "" Then
            MsgBox "No files found"
            Exit Sub
        End If
     
        'Fill the array(myFiles)with the list of Excel files in the folder
        Fnum = 0
        Do While FilesInPath <> ""
            Fnum = Fnum + 1
            ReDim Preserve MyFiles(1 To Fnum)
            MyFiles(Fnum) = FilesInPath
            FilesInPath = Dir()
        Loop
     
        'Change ScreenUpdating, Calculation and EnableEvents
        With Application
            CalcMode = .Calculation
            .Calculation = xlCalculationManual
            .ScreenUpdating = False
            .EnableEvents = False
        End With
     
        'Loop through all files in the array(myFiles)
        If Fnum > 0 Then
            For Fnum = LBound(MyFiles) To UBound(MyFiles)
                Set mybook = Nothing
                On Error Resume Next
                Set mybook = Workbooks.Open(MyPath & MyFiles(Fnum))
                On Error GoTo 0
     
                If Not mybook Is Nothing Then
     
     
     
                        'Change cell value(s) in one worksheet in mybook
                        On Error Resume Next
     
                        With thisbook
                            If .ProtectContents = True Then .Unprotect Password:=Pass
                        End With
     
                        With mybook.Worksheets(1)
                            If .ProtectContents = True Then .Unprotect Password:=Pass
                        End With
                        With thisbook
                            .Range("G17:L36").Copy(mybook.Worksheets(1).Range("G17:L36")).PasteSpecial Paste:=xlPasteAll
     
                            .Protect Password:=Pass
                        End With
     
     
                    If Err.Number > 0 Then
                        ErrorYes = True
                        Err.Clear
                        'Close mybook without saving
                        mybook.Close savechanges:=False
                    Else
                        'Save and close mybook
                        mybook.Close savechanges:=True
                    End If
                    On Error GoTo 0
                Else
                    'Not possible to open the workbook
                    ErrorYes = True
                End If
     
            Next Fnum
        End If
     
        If ErrorYes = True Then
            MsgBox "There are problems in one or more files, possible problem:" _
                 & vbNewLine & "protected workbook/sheet or a sheet/range that not exist"
        End If
     
        'Restore ScreenUpdating, Calculation and EnableEvents
        With Application
            .ScreenUpdating = True
            .EnableEvents = True
            .Calculation = CalcMode
        End With
    End Sub
    j'ai pas les fichiers mais j'ai testé ya pas d'erreur copie le code tel quel j'ai modifié deux trucs, je crois que tes unlocked il vaud mieu les faire a la suite et copier coller d'un coup , enfin pour moi je pense que c'etait pas bon entre autre

    remplace
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    activeworkbook par thisworkbook 
    et Paste:=xlPasteAllExceptBorders si tu veux pas les bordures
    Allez le RC LEns

  9. #9
    Membre à l'essai
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Juillet 2015
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juillet 2015
    Messages : 57
    Points : 17
    Points
    17
    Par défaut
    As-tu testé avec une série de fichiers dans un répertoire ?

    Je vois que le code n'a pas d'erreur, qu'il passe à travers tous les fichier, mais il ne copie rien.

    Voici ce que j'ai fait :

    J'ai créé un répertoire test sur mon bureau, j'ai créé un fichier source excel dans mon nouveau répertoire et j'ai créé un autre répertoire contenant mes fichiers destination. J'ai verrouillé mes fichiers pour la simulation avec le même mot de passe. Dans le nouveau fichier source, j'ai nommé la première feuille "Paramètres".
    J'ai copié/coller le code et j'ai changé le chemin du répertoire... Ensuite quand je lance, tous les fichiers s'ouvrent et se ferment un par un, je ne sais pas ce qui se passe à l'intérieur mais je sais que la copie n'a pas fonctionné...

    Tu en penses quoi ?

  10. #10
    Membre éclairé
    Avatar de tamtam64
    Homme Profil pro
    stagiaire developpement vba
    Inscrit en
    Mai 2012
    Messages
    456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : stagiaire developpement vba
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2012
    Messages : 456
    Points : 658
    Points
    658
    Billets dans le blog
    17
    Par défaut bizard
    C'est surprenant car chez moi ca fonctionne tres bien et ca copie le range sur les documents ....
    utilise le mode pas a pas, je pense que ca viens du fait qu'il faut enregistrer la modification probablement
    Allez le RC LEns

  11. #11
    Membre à l'essai
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Juillet 2015
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juillet 2015
    Messages : 57
    Points : 17
    Points
    17
    Par défaut Très bizarre
    Ça c'est vraiment étrange... C'est surement moi qui loupe un truc

    En "pas à pas" ça fonctionne parfaitement, sauf jusqu'à :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    If Err.Number > 0 Then
                        ErrorYes = True
                        Err.Clear
                        'Close mybook without saving
                        mybook.Close savechanges:=False
    À chaque fois il agit comme s'il y avait une erreur et ferme sans enregistrer... J'ai remplacé le False par un True et cela fonctionne parfaitement. Je ne comprends pas d'où vient l'erreur

    En passant, ton aide est vraiment appréciée.

  12. #12
    Membre éclairé
    Avatar de tamtam64
    Homme Profil pro
    stagiaire developpement vba
    Inscrit en
    Mai 2012
    Messages
    456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : stagiaire developpement vba
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2012
    Messages : 456
    Points : 658
    Points
    658
    Billets dans le blog
    17
    Par défaut
    Moi ya des choses que je ne comprend pas dans ton code : Option Explicit
    Pourquoi faire trois test sur le fait que tu trouves un fichier ou non?
    je veux dire si tu as des fichier avec ta premiere fonction , pourquoi retester ? ca n'a pas d'interet
    Si tu veux je peux te le recoder car ya des choses pas tres logiques dans ton code mais c'est plutot algorithmiquement car sinon c'est plutot pas mal

    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
     
     
        'If there are no Excel files in the folder exit the sub
        FilesInPath = Dir(MyPath & "*.xl*")
        If FilesInPath = "" Then
            MsgBox "No files found"
            Exit Sub
        End If
     
        'Fill the array(myFiles)with the list of Excel files in the folder
        Fnum = 0
        Do While FilesInPath <> ""
            Fnum = Fnum + 1
            ReDim Preserve MyFiles(1 To Fnum)
            MyFiles(Fnum) = FilesInPath
            FilesInPath = Dir()
        Loop
     
     
     
        'Loop through all files in the array(myFiles)
        If Fnum > 0 Then
     
     
                If Not mybook Is Nothing Then
    Allez le RC LEns

  13. #13
    Membre à l'essai
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Juillet 2015
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juillet 2015
    Messages : 57
    Points : 17
    Points
    17
    Par défaut Wow
    Ça serait très apprécié ! En fait je débute dans le code et j'ai pris des petits bouts un peu partout dans des livres et sur internet... J'essaie encore d'apprivoiser le VBA ! Il se peut qu'il y ait des trucs pas logiques :p

  14. #14
    Membre éclairé
    Avatar de tamtam64
    Homme Profil pro
    stagiaire developpement vba
    Inscrit en
    Mai 2012
    Messages
    456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : stagiaire developpement vba
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2012
    Messages : 456
    Points : 658
    Points
    658
    Billets dans le blog
    17
    Par défaut
    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
    Option Explicit
     
    Const Pass As String = "0179"
     
    Sub Example()
            'Variables
        Dim MyPath As String, FilesInPath As String
        Dim MyFiles() As String, Fnum As Long
        Dim mybook As Workbook, xlsheet As Worksheet
        Dim CalcMode As Long, ErrorYes As Boolean
     
            'Change ScreenUpdating, Calculation and EnableEvents
        With Application
            CalcMode = .Calculation
            .Calculation = xlCalculationManual
            .ScreenUpdating = False
            .EnableEvents = False
        End With
     
            'Dim ActiveWorksheet As Worksheet
        Set xlsheet = ThisWorkbook.Worksheets("Paramètres")
     
            'Fill in the path\folder where the files are
        MyPath = "E:\VBAProjectCACIB\Projet3\20150605"
     
            'Add a slash at the end if the user forget it
        If Right(MyPath, 1) <> "\" Then
            MyPath = MyPath & "\"
        End If
     
        'If there are no Excel files in the folder exit the sub
        FilesInPath = Dir(MyPath & "*.xl*")
        If FilesInPath = "" Then
            MsgBox "No files found"
            Exit Sub
        End If
     
        'Fill the array(myFiles)with the list of Excel files in the folder
        Fnum = 0
        Do While FilesInPath <> ""
            Fnum = Fnum + 1
            ReDim Preserve MyFiles(1 To Fnum)
            MyFiles(Fnum) = FilesInPath
            FilesInPath = Dir()
        Loop
     
        'Loop through all files in the array(myFiles)
     
            For Fnum = LBound(MyFiles) To UBound(MyFiles)
     
                Set mybook = Workbooks.Open(MyPath & MyFiles(Fnum))
     
                        'Change cell value(s) in one worksheet in
     
                        With ThisWorkbook.Worksheets(1)
                            If .ProtectContents = True Then .Unprotect Password:=Pass
                        End With
     
                        With mybook.Worksheets(1)
                            If .ProtectContents = True Then .Unprotect Password:=Pass
                        End With
                        With mybook.Worksheets(1)
                            ThisWorkbook.Worksheets(1).Range("G17:L36").Copy .Range("G17:L36")
                            .Protect Password:=Pass
                        End With
     
                        'Save and close mybook
                        mybook.Close savechanges:=True
                    Next Fnum
     
        'Restore ScreenUpdating, Calculation and EnableEvents
        With Application
            .ScreenUpdating = True
            .EnableEvents = True
            .Calculation = CalcMode
        End With
    End Sub
    Voila change le lien et ça va tourner comme tu veux , j'ai enlevé les choses inutiles pour ce code .
    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
    Option Explicit
     
    Const Pass As String = "0179"
     
    Sub Example()
            'Variables
        Dim MyPath As String, FilesInPath As String
        Dim MyFiles() As String, Fnum As Long
        Dim mybook As Workbook, xlsheet As Worksheet
        Dim CalcMode As Long, ErrorYes As Boolean
     
            'Change ScreenUpdating, Calculation and EnableEvents
        With Application
            .ScreenUpdating = False
        End With
     
            'Dim ActiveWorksheet As Worksheet
        Set xlsheet = ThisWorkbook.Worksheets("Paramètres")
     
            'Fill in the path\folder where the files are
        MyPath = "E:\VBAProjectCACIB\Projet3\20150605"
     
            'Add a slash at the end if the user forget it
        If Right(MyPath, 1) <> "\" Then
            MyPath = MyPath & "\"
        End If
     
        'If there are no Excel files in the folder exit the sub
        FilesInPath = Dir(MyPath & "*.xl*")
        If FilesInPath = "" Then
            MsgBox "No files found"
            Exit Sub
        End If
     
        'Fill the array(myFiles)with the list of Excel files in the folder
        Do While FilesInPath <> ""
            Fnum = Fnum + 1
            ReDim Preserve MyFiles(1 To Fnum)
            MyFiles(Fnum) = FilesInPath
            FilesInPath = Dir()
        Loop
     
        'Loop through all files in the array(myFiles)
     
            For Fnum = LBound(MyFiles) To UBound(MyFiles)
     
                Set mybook = Workbooks.Open(MyPath & MyFiles(Fnum))
     
                        'Change cell value(s) in one worksheet in
     
                        With ThisWorkbook.Worksheets(1)
                            If .ProtectContents = True Then .Unprotect Password:=Pass
                        End With
     
                        With mybook.Worksheets(1)
                            If .ProtectContents = True Then .Unprotect Password:=Pass
                        End With
                        ThisWorkbook.Worksheets(1).Range("G17:L36").Copy
                        With mybook.Worksheets(1)
                            .Range("G17:L36").PasteSpecial Paste:=xlPasteAll
                            .Protect Password:=Pass
                            Application.CutCopyMode = False
                        End With
     
                        'Save and close mybook
                        mybook.Close savechanges:=True
                    Next Fnum
     
        'Restore ScreenUpdating, Calculation and EnableEvents
        With Application
            .ScreenUpdating = True
        End With
    End Sub
    Allez le RC LEns

  15. #15
    Membre à l'essai
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Juillet 2015
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juillet 2015
    Messages : 57
    Points : 17
    Points
    17
    Par défaut Ça fonctionne !
    Ça fonctionne parfaitement !

    Si je peux me permettre, il y aurait une dernière petite chose à rajouter... Je travail dans un vieux système de fichiers et les fichiers sont "linkés"
    Je cherche la commande pour désactiver les "links"

    Nom : image.JPG
Affichages : 198
Taille : 41,2 Ko

    T'as une idée ?

  16. #16
    Membre éclairé
    Avatar de tamtam64
    Homme Profil pro
    stagiaire developpement vba
    Inscrit en
    Mai 2012
    Messages
    456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : stagiaire developpement vba
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2012
    Messages : 456
    Points : 658
    Points
    658
    Billets dans le blog
    17
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    application.displayalerts = true
    puis application.displayalerts = false
     
    pour eviter d'avoire des alertes ou messages
    si c'est pour supprimer les liens tu peux le faire dans excel en suppriment les liens cherche dans google. Je ne sais pas trop si je repond a ta question
    Il me semple que tu ne peux pas les enlever, car moi aussi j'ai des messages comme ca au travail et je n'y touche pas , attend d'autres reponses mais, mon maitre de stage ne m'a jamais dis de les enlever lors de mes projets . Je pense que tu ne peux pas
    Allez le RC LEns

  17. #17
    Membre à l'essai
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Juillet 2015
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juillet 2015
    Messages : 57
    Points : 17
    Points
    17
    Par défaut Alertes
    Oui exactement, c'est pour enlever les alertes seulement...

    Logiquement, il faudrait le placer où exactement ? Avant la séquence de unlock ?

  18. #18
    Membre éclairé
    Avatar de tamtam64
    Homme Profil pro
    stagiaire developpement vba
    Inscrit en
    Mai 2012
    Messages
    456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : stagiaire developpement vba
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2012
    Messages : 456
    Points : 658
    Points
    658
    Billets dans le blog
    17
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    application. screenupdating = false
    application.displayalerts = false
    ....
    application. screenupdating = true
    application.displayalerts = true
    comme tu as fait au debut puis à la fin , tu enleve l'actualisation de l'ecran , puis les alertes , puis a la fin tu remet comme au debut , eventuellement tu peux les metre des ds variables mais bon, pas essentiel ici
    Allez le RC LEns

  19. #19
    Membre à l'essai
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Juillet 2015
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juillet 2015
    Messages : 57
    Points : 17
    Points
    17
    Par défaut
    Ça n'a pas l'air de fonctionner... Ça m’apparaît toujours la même alerte. Est-ce que c'est possible qu'étant donné que mon document dans lequel est le code soit "linked" aussi, donc ça le demande à chaque fois ?

  20. #20
    Membre éclairé
    Avatar de tamtam64
    Homme Profil pro
    stagiaire developpement vba
    Inscrit en
    Mai 2012
    Messages
    456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : stagiaire developpement vba
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2012
    Messages : 456
    Points : 658
    Points
    658
    Billets dans le blog
    17
    Par défaut
    comme je t'ai dit tu ne peux pas l'enlever ca , ou sinon tu dois enlever les liens . et ca tu cherche sur internet tu vas trouver , comment les supprimer mais je ne pense pas que ce soit ce que tu veux , alors clairement tu ne peux pas enlever ca
    Allez le RC LEns

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 3 123 DernièreDernière

Discussions similaires

  1. [XL-2010] copier/coller mise en forme d'un graphe excel
    Par awa123 dans le forum Excel
    Réponses: 1
    Dernier message: 09/01/2015, 14h32
  2. Réponses: 0
    Dernier message: 17/11/2012, 17h51
  3. Macro pour copier sans mise en forme
    Par oligig dans le forum VBA Word
    Réponses: 11
    Dernier message: 07/12/2011, 22h33
  4. [VBA EXCEL]: Savoir si une mise en forme conditionnelle est active
    Par ADONET dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 03/01/2007, 14h59
  5. Aide sur les macros Excel pour recopie auto de données
    Par nicoduhavre dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 15/11/2005, 08h38

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