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 :
Voici mon code général :
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.
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.