VBA - Copier sélection multiple

Bonjour à tous,

J'ai une macros qui copie des données d'un tableau vers un autre classeur excel. Mon problème survient lorsque je copie une sélection multiple en particulier. J'obtiens l'erreur 1004 lors de la sélection. Je voudrais savoir si quelqu'un à des idées sur pourquoi ça se produit. Ce qui est étrange est que la macro fonctionnait bien la semaine dernière quand j'ai écris le code. Un autre point à souligner est que comme vous pourrex lire dans le code ci-dessous, la macros fait une sélection multiple différente selon le fichier qui est ouvert "Laval" ou "St-François". La sélection multiple de Laval ne fonctionne plus alors que la sélection multiple pour St-François marche toujours bien...

PS: Je suis sûr à 99,9% que je n'ai pas changer ma macros.

Voici le code:

Private Sub MAJ_VV_Click()

    Application.ScreenUpdating = False
    Dim L As Integer
    Dim Mois As String
    Dim Semaine As String
    GetVars

    Mois = Range("VV_Mois").Text            'Définie le mois selon le champs nommée "VV_Mois" (Selon la sélection de la liste)
    Semaine = Range("VV_Semaine").Text      'Définie la semaine selon le champs nommée "VV_Semaine" (Selon la sélection de la liste)

'_____________________________________________________________________________________________________________
    ' Tableau de bord utilisé
    TB = ThisWorkbook.Name
    ' Chemin du fichier ciblé
    Chemin = "H:\DXA Production\7. VENTES ET VISUELS\" + No + " - " + Plant + "\VISUEL " + Année + "\" + Mois + "\"
    ' Fichier ciblé
    Fichier = Mois + "_" + Année + ".xls"
    ' Feuille où les données sont copiées
    wsc = Semaine
    ' Feuille où les données sont collées
    wsp = "Tableau de bord"
'_____________________________________________________________________________________________________________

    ' Supprimer le tableau existant
    Set ch1 = Range("VV_Mois").MergeArea
    Set ch2 = Range("Inventaire").MergeArea
    Range(ch1.Cells(1, 1).Offset(1, 0), ch2.Cells(1, ch2.Columns.Count).Offset(-2, 0)).Select
    Selection.EntireRow.Delete

    ' Ouvre le document de vente et visuel voulu pour le mois choisi
    Workbooks.Open (Chemin + Fichier)

'________LAVAL____________________________________________________________________________________________________________
    If Plant = "Laval" Then

    Workbooks(Fichier).Sheets(wsc).Range("C14:G45, C50:G59, J14:J45, J50:J59, L14:L45, L50:L59, N14:N45, N50:N59").Select
    L = Selection.Rows.Count

    Workbooks(TB).Activate
    Workbooks(TB).Sheets(wsp).Range("VV_Mois").Offset(1, 0).Select

    For I = 1 To 42
        Selection.EntireRow.Insert Shift:=xlDown
    Next I

    Workbooks(Fichier).Activate
    Workbooks(Fichier).Sheets(wsc).Range("C14:G45, C50:G59, J14:J45, J50:J59, L14:L45, L50:L59, N14:N45, N50:N59").Select
    Selection.Copy

'________ST-FRANÇOIS______________________________________________________________________________________________________
    ElseIf Plant = "St-François" Then

    Workbooks(Fichier).Sheets(wsc).Range("C14:D53, F14:G53, K14:K53, M14:M53").Select
    L = Selection.Rows.Count

    Workbooks(TB).Activate
    Workbooks(TB).Sheets(wsp).Range("VV_Mois").Offset(1, 0).Select

    For I = 1 To L
        Selection.EntireRow.Insert Shift:=xlDown
    Next I

    Workbooks(Fichier).Activate
    Workbooks(Fichier).Sheets(wsc).Range("C14:D53, F14:G53, K14:K53, M14:M53").Select
    Selection.Copy        

    End If
  '______________________________________________________________________________________________________
    Workbooks(TB).Activate
    Workbooks(TB).Sheets(wsp).Range("VV_Mois").Offset(1, 0).Select
    ActiveCell.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
    ActiveCell.PasteSpecial Paste:=xlFormats
    Selection.AutoFilter

'___________________________________________________________________________________
    'FORMAT DE CELLULE À RISQUE
        Range("H120:I160").Select
    Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
        "=CELLULE=""À risque"""
    Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
    With Selection.FormatConditions(1).Font
        .Bold = True
        .Italic = False
        .ThemeColor = xlThemeColorDark1
        .TintAndShade = 0
    End With
    With Selection.FormatConditions(1).Interior
        .PatternColorIndex = xlAutomatic
        .Color = 255
        .TintAndShade = 0
    End With
    Selection.FormatConditions(1).StopIfTrue = False
    Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=CELLULE=""OK"""
    Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
    With Selection.FormatConditions(1).Font
        .Bold = True
        .Italic = False
        .ThemeColor = xlThemeColorDark1
        .TintAndShade = 0
    End With
    With Selection.FormatConditions(1).Interior
        .PatternColorIndex = xlAutomatic
        .Color = 5296274
        .TintAndShade = 0
    End With
    Selection.FormatConditions(1).StopIfTrue = False
'___________________________________________________________________________________

    ' Ferme le fichier de ventes et visuels sans enregistrer
    Application.DisplayAlerts = False
    Workbooks(Fichier).Close

End Sub

Je sais que ce n'est pas pratique mais malheureusement je ne peut pas joindre mes fichiers pour des raisons de confidentialités.

Si vous avez une idée répondez moi de votre mieux.

Merci!

J'ai modifié mon code. J'ai remplacé les plages dans la sélection par des champs nommés. J'ai essayé la macros et ça a fonctionné. Je réessaie et maintenant ça ne fonctionne plus! Je ne comprends vraiment pas c'est quoi le problème... Mon erreur se produit maintenant au niveau de l'exécution de la ligne "Selection.Copy". Un message m'apparait et dis qu'il est impossible d'effectuer cette commande sur une sélection multiple. Pourtant j'ai bien vérifier les Règles sur les opérations sur des sélections multiples du site de microsoft et je me suis assuré qu'il n'y ait pas de zones disjointes dans la sélection.

Rechercher des sujets similaires à "vba copier selection multiple"