Macro qui marche 1 fois sur 2
Bonjour,
j'ai créé une macro pour récupérer des données dans un autre classeur. Je copie les données de 2 feuilles en même temps dans le classeur A, je passe dans le classeur B et je veux coller ces données dans 2 feuilles du classeur B, en "oubliant" les cellules vides.
Mon problème, c'est qu'elle plante systématiquement 1 fois sur 2, toujours au même endroit :
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=True, Transpose:=False
le message qui m'arrive quand ça plante :
Erreur 1004
La méthode PasteSpecial de la classe range a échoué.
Comment faire pour que ça marche tout le temps ?
Merci pour vos réponses
- Messages
- 9'245
- Excel
- Vista Office 2007FR
- Inscrit
- 08/12/2007
- Emploi
- retraité Sce.Méthodes
Bonjour,
Fait-nous voir le début du code jusqu'au bug.
ou la macro complète
amicalement
Claude.
Voici le code complet précédent :
(j'ai fait des modifs depuis mon premier post, mais toujours le même bug)
Dim MESSAGE1, MESSAGE2, MESSAGE3, MESSAGE
Dim MSG_CONFIRMATION
Dim NOM_FICHIER_A_OUVRIR
Dim NOM_FICHIER_OUVERT
Dim ERREUR_FICHIER
Dim VILLE, ARMOIRE, TARIF, FACTHABN, FACTHTOT
Dim MSG_FIN_RECUP
Dim NOM_FEUILLE_ACTIVE
Dim NOM_CELLULE_ACTIVE
Dim LOCALISATION, TEA, AIDES, DISTRIBUTION, NORME, COUTARM, RELAIS1, RELAIS2, COUTHA
Dim TYPEHA, COUTVDT, TYPEVDT, SOL1, SOL2, TENSION
NOM_FICHIER_OUVERT = ActiveWorkbook.Name
NOM_FEUILLE_ACTIVE = ActiveSheet.Name 'pouvoir revenir à la feuille active en fin de macro
NOM_CELLULE_ACTIVE = ActiveCell.Address 'pouvoir revenir à la cellule active en fin de macro
'CONFIRMATION LANCEMENT
MESSAGE1 = "La récupération des données d'un fichier archivé remplacera"
MESSAGE2 = "toutes les données du fichier '" & NOM_FICHIER_OUVERT & "'."
MESSAGE3 = "Êtes-vous sûr de vouloir continuer ?"
MESSAGE = MESSAGE1 & Chr$(10) & MESSAGE2 & Chr$(10) & Chr$(10) & MESSAGE3
MSG_CONFIRMATION = MsgBox(MESSAGE, vbYesNo + vbExclamation, "Récupération de données")
If MSG_CONFIRMATION = vbNo Then Exit Sub
'OUVERTURE DU FICHIER
Choix_fichier:
NOM_FICHIER_A_OUVRIR = Application.GetOpenFilename("Classeur Microsoft Excel (*.xls*),*.xls*") 'Filtre(forcément un fichier XLS)
If NOM_FICHIER_A_OUVRIR = False Then Exit Sub
Application.ScreenUpdating = False 'gel de l'écran (on ne voit pas le fichier ni les copier-coller)
Workbooks.Open (NOM_FICHIER_A_OUVRIR)
Application.StatusBar = "Récupération des données en cours, veuillez patienter..."
If Sheets(4).Name = "Cout" Then GoTo Récup
MESSAGE1 = "Le fichier '" & ActiveWorkbook.Name & "' n'est pas un fichier archivé ou a été modifié."
MESSAGE2 = "Sélectionnez un autre fichier."
MESSAGE = MESSAGE1 & Chr$(10) & Chr$(10) & MESSAGE2
ERREUR_FICHIER = MsgBox(MESSAGE, vbCritical + vbOKOnly, "ee")
ActiveWorkbook.Close (False)
GoTo Choix_fichier
Récup:
NOM_FICHIER_A_OUVRIR = ActiveWorkbook.Name 'Suppression chemin d'accès
Sheets("Armoire").Select
TARIF = Range("B1").Value
FACTHABN = Range("B2").Value
FACTEABN = Range("B3").Value
FACTHTOT = Range("B4").Value
FACTHTOT = Range("B5").Value
VILLE = Range("B6").Value
ARMOIRE = Range("B7").Value
LOCALISATION = Range("B8").Value
TEA = Range("B9").Value
AIDES = Range("B10").Value
DISTRIBUTION = Range("B11").Value
NORME = Range("B12").Value
COUTARM = Range("B13").Value
RELAIS1 = Range("B14").Value
RELAIS2 = Range("B15").Value
COUTHA = Range("B16").Value
TYPEHA = Range("B17").Value
COUTVDT = Range("B18").Value
TYPEVDT = Range("B19").Value
SOL1 = Range("B20").Value
SOL2 = Range("B21").Value
'Copier-coller des données
'Workbooks(NOM_FICHIER_A_OUVRIR).Activate
Sheets("BE Initial").Select
Columns("C:C").Select
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Columns("E:E").Select
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Sheets("BE modifié").Select
Columns("C:C").Select
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Columns("E:F").Select
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Application.CutCopyMode = False 'Désactivation du mode "copier-coller"
'-------------------------------------------------------------------------------------------
Sheets(Array(2, 3)).Select
Range("A2:B49").Select
Selection.Copy
Workbooks(NOM_FICHIER_OUVERT).Activate
Sheets("BE Initial").Select
Range("C5").PasteSpecial Paste:=xlValues
ET LA, CA QUEUTE SUR LE PASTESPECIAL, TOUJOURS 1 FOIS SUR 2, SANS SE TROMPER...