Compatibilité Macro et Macro Répertoire

Bonjour à tous,

Je dispose d’une macro qui permet de copier des lignes sélectionnées de la première feuille dans toutes les autres feuilles existantes d’un même classeur. Or celle-ci ne fonctionne que si je copie le code dans le fichier à traiter alors qu’avec toutes les autres macros dont je dispose, celles-ci peuvent être appelées à partir d’un fichier à traiter.

De la même manière, si j’intègre cette macro dans un ensemble de macros à traiter via une macro générale, toutes les autres s’exécutent sauf elle !

Quelles sont donc les modifications à apporter ? :

Sub CopieLignesSélectionnées()

Dim wsh As Worksheet, derLig0&, xarea As Range

Dim Source As Range, laBas As Range, n&

Application.ScreenUpdating = False

With Worksheets("Base")

.Activate

Set Source = Intersect(Selection.EntireRow, .Range("a:h").EntireColumn)

End With

For Each wsh In ThisWorkbook.Worksheets

If wsh.Index > Worksheets("Base").Index Then

With wsh

On Error Resume Next: derLig0 = 0

derLig0 = Application.WorksheetFunction.Match(999, .Range("h:h"), 1)

On Error GoTo 0

For Each xarea In Source.Areas

n = .Cells(.Rows.Count, "a").End(xlUp).Row

If n = 1 And .Cells(1, "a") = "" Then n = n - 1

n = n + 1

xarea.Copy .Cells(n, "a")

.Columns(1).NumberFormat = "dd/mm/yyyy"

Next xarea

Application.Goto .Range("a1"), True

End With

End If

Next wsh

End Sub

Par ailleurs, je dispose d’une autre macro qui permet d’exécuter un code sur tous les fichiers d’un répertoire actif. Elle fonctionne parfaitement sauf qu’à la fin du traitement de chaque fichier elle me demande si je veux ou non enregistrer les modifications apportées.

Est-il possible de rectifier le code pour que les enregistrements des modifications se fassent de manière automatique à la fin de chaque traitement de fichier ?

Sub parcourirFichiers()

Dim chemin As String, Fichier As String

Dim wb As Workbook

Set wb = ThisWorkbook

chemin = wb.Path + "\"

Fichier = Dir(chemin & "*.xl*") ' 1er fichier

Do While (Len(Fichier) > 0)

If Fichier <> ThisWorkbook.Name Then

Workbooks.Open chemin & Fichier

' traitement

(NOM DE LA MACRO A EXECUTER)

ActiveWorkbook.Close

End If

Fichier = Dir() ' fichier suivant

Loop

End Sub

Merci par avance de vos réponses.

Bonjour,

Pour mette la macro dans tous les classeur il faut l'enregistrer dans le module mais de la partie VBAProject (PERSONAL.XLSB) en haut à gauche de VBA.

Pour la sauvegarde auto :

Sub parcourirFichiers()
Dim chemin As String, Fichier As String
Dim wb As Workbook
Set wb = ThisWorkbook
chemin = wb.Path + "\"
Fichier = Dir(chemin & "*.xl*") ' 1er fichier
Do While (Len(Fichier) > 0)
If Fichier <> ThisWorkbook.Name Then
Workbooks.Open chemin & Fichier
' traitement
(NOM DE LA MACRO A EXECUTER)
ActiveWorkbook.Close savechanges = true
End If
Fichier = Dir() ' fichier suivant
Loop
End Sub

Merci pour ta réponse Valc,

mais je ne vois pas de quelle manip il s'agit.

Mon objectif ici n'est pas de faire en sorte de copier la macro dans tous les classeurs du répertoire mais, dans un premier temps, de la modifier de telle sorte que lorsqu'elle est déjà copiée dans un seul classeur ouvert je puisse la lancer d'un autre classeur à traiter et cela n'est pas possible.

Pour faire court, cette macro a pour objectif de copier les lignes sélectionnées dans la première feuille d'un classeur (nommée "Base") dans toutes les autres feuilles (quelque soit leur nom) et ce à la suite de la première ligne rencontrée en partant du bas de toutes ces autres feuilles.

Lorsque j'ouvre le classeur contenant la macro, je dois pouvoir lancer cette macro à partir de n'importe quel autre classeur à traiter, comme il est possible de le faire avec n'importe quelle autre macro.

Elle me renvoie alors le message suivant :

Erreur d'exécution '9' :

L'indice n'appartient pas à la sélection

Et il me surligne en jaune la ligne de commande :

If wsh.Index > Worksheets("Base").Index Then

Or, si je copie cette même macro dans le même emplacement du classeur à traiter, tout marche !!!

Autrement dit, après avoir ouvert le classeur contenant ladite macro, je souhaiterais qu'elle s'applique sans bug en l'appelant de n'importe quel autre classeur à traiter sans avoir besoin de la copier.

C'est ce hic que je n'arrive pas à corriger.

Cordialement.

Rechercher des sujets similaires à "compatibilite macro repertoire"