Problème dans le code d'une macro pour copier coller des valeurs

Angelusyfaire

XLDnaute Nouveau
Bonjour,

Je fais appel au forum pour un petit problème que je rencontre. J'ai une macro qui me permet de faire un copier coller mais la macro bloque au niveau de :

Code:
o.Range(o.Cells(dl + 1, 1), o.Cells(dl + 1, 16)).Insert shift:=xlShiftDown 'insère dans la ligne

Voici mon code général :

Code:
Public Sub Macro1()
Dim f As Object 'déclare la variable f (onglet Feuil1)
Dim o As Object 'déclare la variable o (Onglet)
Dim dl As Integer 'déclare la variable dl (Dernière Ligne)
Dim pl As Range 'déclare la variable pl (PLage)
Dim nd As String 'déclare la variable nd (Numéro du Dossier)
Dim v As String 'déclare la variavle v (Version)Set f = Sheets("Feuil1") 'définit l'onglet f

Set f = Sheets("Intégrer un document") 'définit l'onglet f
On Error Resume Next 'gestion des erreurs (en cas d'erreur passe à la ligne suivante)
Set o = Sheets(f.Range("D7").Value) 'définit l'onglet o (génère une erreur si cet onglet n'existe pas)
If Err <> 0 Then 'condition : si une ereur a été générée
    Err = 0 'annule l'ereur
    MsgBox "L'onglet " & f.Range("E7").Value & " n'existe pas !" 'message
    f.Select 'sélectionne l'onglet f (au cas où...)
    f.Range("E7").Select 'sélectionne la cellule C3 de l'onglet f
    Exit Sub 'sort de la procédure
End If 'fin de la condition
On Error GoTo 0 'annule la gestion des ereurs
nd = CStr(f.Range("D8").Value) 'définit le numéro de dossier nd
v = CStr(f.Range("D12").Value) 'définit la version v
dl = o.Cells(Application.Rows.Count, 10).End(xlUp).Row 'définit la dernière ligne dl de la colonne 4 (=D)
f.Range("A34:P34").Copy 'copie B34:P34
o.Range(o.Cells(dl + 1, 1), o.Cells(dl + 1, 16)).Insert shift:=xlShiftDown 'insère dans la ligne li
Application.CutCopyMode = False 'supprime le clignotement des cellule copiées
Set pl = o.Range(o.Cells(1, 1), o.Cells(dl + 1, 16)) 'définit la plage pl
'tri la plage pl par ordre croissant de numéro de dossier et par ordre croissant de version
pl.Sort Key1:=o.Range("J2"), Order1:=xlAscending, _
   Key2:=o.Range("K2"), Order2:=xlAscending, _
   Header:=xlNo, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
   DataOption1:=xlSortNormal, DataOption2:=xlSortNormal, DataOption3:=xlSortNormal
o.Range("A1").AutoFilter field:=2, Criteria1:=nd 'filtre le tableau para rapport au numéro de dossier
pl.SpecialCells(xlCellTypeVisible).Interior.ColorIndex = 15 'colore la plage visible de gris
'si le nombre de ligne visible est supérieur à 1, ajoute la date en coloone F de l'avant dernière cellule de la plage visible
If pl.SpecialCells(xlCellTypeVisible).Rows.Count > 1 Then o.Cells(pl.SpecialCells(xlCellTypeLastCell).Row - 1, 14).Value = Date
o.Range("A1").AutoFilter field:=3, Criteria1:=v 'filtre la plage visible par rapport à la version
pl.SpecialCells(xlCellTypeVisible).Interior.ColorIndex = xlNone 'supprime la couleur de la ligne visible
o.Range("A1").AutoFilter 'supprime le filtre
o.Select 'sélectionne l'Onglet
End Sub


Pensez vous que j'ai oublier quelque chose ? J'ai une erreur 1004 " La méthode insert de la classe range a échoué"

Je ne comprend absolument pas d'où vient le problème après avoir changer plein de truc je ne trouve vraiment pas. Je fais donc appel a votre savoir car je suis novice avec le VBA

Je rajoute aussi une question le copier coller devrait marcher mais est- il possible de faire un copier coller valeur ?

Merci beaucoup de toute l'aide que vous pourrez m'apporter.
 

Pièces jointes

  • Macro.zip
    151.8 KB · Affichages: 38
  • Macro.zip
    151.8 KB · Affichages: 36
  • Macro.zip
    151.8 KB · Affichages: 48

Papou-net

XLDnaute Barbatruc
Re : Problème dans le code d'une macro pour copier coller des valeurs

Bonjour Angelusyfaire,

Petite erreur de syntaxe dans ton code.

Remplaces :

Code:
If Err <> 0 Then 'condition : si une ereur a été générée
    Err = 0 'annule l'ereur
par :

Code:
If Error <> 0 Then 'condition : si une ereur a été générée
    Error = 0 'annule l'ereur
Cordialement.
 

Papou-net

XLDnaute Barbatruc
Re : Problème dans le code d'une macro pour copier coller des valeurs

Bonjour Angelusyfaire,

Essaie en modifiant le début de ta macro comme ceci:

Code:
Public Sub Macro1()
Dim f As Object 'déclare la variable f (onglet Feuil1)
Dim o As Object 'déclare la variable o (Onglet)
Dim dl As Integer 'déclare la variable dl (Dernière Ligne)
Dim pl As Range 'déclare la variable pl (PLage)
Dim nd As String 'déclare la variable nd (Numéro du Dossier)
Dim v As String 'déclare la variavle v (Version)Set f = Sheets("Feuil1") 'définit l'onglet f

Set f = Sheets("Intégrer un document") 'définit l'onglet f
On Error Resume Next 'gestion des erreurs (en cas d'erreur passe à la ligne suivante)
Set o = Sheets(f.Range("E7").Value) 'définit l'onglet o (génère une erreur si cet onglet n'existe pas)
If Error <> "" Then 'condition : si une ereur a été générée
    Error = "" 'annule l'ereur
    MsgBox "L'onglet " & f.Range("E7").Value & " n'existe pas !" 'message
    f.Select 'sélectionne l'onglet f (au cas où...)
    f.Range("E7").Select 'sélectionne la cellule C3 de l'onglet f
    Exit Sub 'sort de la procédure
End If 'fin de la condition
...
...
Cordialement.
 

Angelusyfaire

XLDnaute Nouveau
Re : Problème dans le code d'une macro pour copier coller des valeurs

Merci !!

Malheuresement, le problème persiste. Mais, bonne nouvelle je viens de me rendre compte d'un truc !!
J'ai des ligne qui étaient masquées !!!

C'est ce qui provoquait le problème !!

J'ai essayé sur un autre onglet et le problème d'insertion est passé pour laisser place à un nouveau problème dans la suite du code.

erreur 1004 :

"Cette opération requiert que les cellules fusionées soient de taille identique"

Help, je ne comprends pas je n'ai pas de cellules fusionnées.

Merci de toute l'aide que vous m'apportez !! :D

EDIT : Le problème au niveau du code intervient ici :

Code:
pl.Sort Key1:=o.Range("J2"), Order1:=xlAscending, _
   Key2:=o.Range("K2"), Order2:=xlAscending, _
   Header:=xlNo, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
   DataOption1:=xlSortNormal, DataOption2:=xlSortNormal, DataOption3:=xlSortNormal
 

Angelusyfaire

XLDnaute Nouveau
Re : Problème dans le code d'une macro pour copier coller des valeurs

Suite de mon problème bis,

J'ai trouvé le problème !! Il vennait de la sélection de la plage de donné qui ne correspondait pas aux filtres.

Un dernier problème je l'espère ! !

Simple le l'espère. Je cherche a faire un copier insérer valeur et non un copier insérer les formules des cellules copier.

Il y a t'il une solution ?

Merciiii
 

Papou-net

XLDnaute Barbatruc
Re : Problème dans le code d'une macro pour copier coller des valeurs

Suite de mon problème bis,Un dernier problème je l'espère ! !

Simple le l'espère. Je cherche a faire un copier insérer valeur et non un copier insérer les formules des cellules copier.

Il y a t'il une solution ?

Merciiii

Bonjour Angelusyfaire,

Il faut utiliser un paramètre dans la commande Paste:

Code:
Range("XXX").Copy
Range("YYY").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
En remplaçant bien entendu XXX et YYY par les adresses de cellules concernées.

Cordialement.
 

Discussions similaires

Statistiques des forums

Discussions
312 082
Messages
2 085 169
Membres
102 804
dernier inscrit
edaguo