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 SubJe 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.