benjaminxls
XLDnaute Nouveau
Bonjour à tous !
J'ai trouvé beaucoup de solutions en naviguant sur ce forum mais là je sèche pour mon projet de bons de commande avec archivage.
J'arrive vers la fin mais l'ajout d'une ligne de code pour ajouter un lien hypertexte (pour ouvrir ultérieurement le fichier PDF exporté) dans l'onglet "Archivage" :
fonctionne bien (on peut cliquer sur le lien pour ouvrir le PDF) mais amène une "Erreur d'exécution '1004' : Erreur définie par l'application ou par l'objet" dans le code de l'onglet principal "Bon de commande" où se trouve aussi le Userform avec le CommandButton pour passer la commande :
La fonction "If Not Application. Intersect (...) Is Nothing" reste difficile à comprendre et à appréhender.
Je pense qu'il y a une piste de ce côté-là à creuser.
Merci par avance.
J'ai trouvé beaucoup de solutions en naviguant sur ce forum mais là je sèche pour mon projet de bons de commande avec archivage.
J'arrive vers la fin mais l'ajout d'une ligne de code pour ajouter un lien hypertexte (pour ouvrir ultérieurement le fichier PDF exporté) dans l'onglet "Archivage" :
VB:
Sub CommandButton_commande_Click()
...
'archiver commande
Sheets("Archivage").Select
ActiveSheet.Unprotect
Rows("2:2").Select
Selection.Insert Shift:=xlDown
Sheets("Archivage").Range("A2").Value = Sheets("Bon de commande").Range("T2").Value
MsgBox (filename_bc)
Sheets("Archivage").Hyperlinks.Add Anchor:=Sheets("Archivage").Range("A2"), Address:=filename_bc 'L'AJOUT SEULE DE CETTE LIGNE PROVOQUE LE PROBLEME
Sheets("Archivage").Range("B2").Value = Sheets("Bon de commande").Range("V17").Value
Sheets("Archivage").Range("C2").Value = Sheets("Bon de commande").Range("H9").Value
If Sheets("Archivage").Range("C2").Value <> 0 Then
Sheets("Archivage").Range("D2").Value = Evaluate("VLookup(C2, Tableau_Chantiers, 2)")
ElseIf Sheets("Archivage").Range("C2").Value = 0 Then
Sheets("Archivage").Range("D2").Value = "Imputation manquante"
End If
Sheets("Archivage").Range("E2").Value = Sheets("Bon de commande").Range("R4").Value
Sheets("Archivage").Range("F2").Value = Left(Sheets("Bon de commande").Range("R9"), Len(Sheets("Bon de commande").Range("R9")) - 2)
Sheets("Archivage").Range("G2").Value = Sheets("Bon de commande").Range("V47")
Sheets("Archivage").Range("A1:G" & Range("G65536").End(xlUp).Row).Select
Selection.Sort Key1:=Range("A1"), Order1:=xlDescending, Key2:=Range("B1") _
, Order2:=xlAscending, Header:=xlYes, OrderCustom:=1, MatchCase:=False _
, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, DataOption2:= _
xlSortNormal
Sheets("Archivage").Range("A1").Select
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowFiltering:=True
Sheets("Bon de commande").Select
Range("R4").MergeArea.ClearContents 'effacer fournisseur
Range("H9:K9,R9:T9,R10:V10,R11:V11,R12:V12,R13:V13").Select
Selection.ClearContents 'effacer imputation et livraison en même temps
Range("R15").MergeArea.ClearContents 'effacer contact
Range("C22:V45").Select
Selection.ClearContents ' effacer liste des produits
Range("F47:I47,L47,E49:L50,N49:N50,P50:R50,V47:W48,G52:R52").Select
Selection.ClearContents 'effacer zone du bas
Range("V47:W48").FormulaR1C1 = "=SUM(R22C22:R45C23)"
Range("H9").Select
...
fonctionne bien (on peut cliquer sur le lien pour ouvrir le PDF) mais amène une "Erreur d'exécution '1004' : Erreur définie par l'application ou par l'objet" dans le code de l'onglet principal "Bon de commande" où se trouve aussi le Userform avec le CommandButton pour passer la commande :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False 'désactiver le rafraîchissement de l'écran avant exécution de la macro
'Gestion du remplissage des cellules pour la zone fournisseur
If Not Application.Intersect(Target, Range("R4")) Is Nothing And Range("R4").Value <> "" Then
Range("R5").Formula = "=IF(R4C18<>0,INDEX(Tableau_Fournisseurs,MATCH(R4C18,Liste_Noms_Fournisseurs,0),2),"""")"
Range("R6").Formula = "=IF(R4C18="""","""",IF(AND(R4C18<>0,INDEX(Tableau_Fournisseurs,MATCH(R4C18,Liste_Noms_Fournisseurs,0),3)<>0),INDEX(Tableau_Fournisseurs,MATCH(R4C18,Liste_Noms_Fournisseurs,0),3),INDEX(Tableau_Fournisseurs,MATCH(R4C18,Liste_Noms_Fournisseurs,0),4)))"
Range("R7").Formula = "=IF(R4C18="""","""",IF(AND(R4C18<>0,INDEX(Tableau_Fournisseurs,MATCH(R4C18,Liste_Noms_Fournisseurs,0),3)<>0),INDEX(Tableau_Fournisseurs,MATCH(R4C18,Liste_Noms_Fournisseurs,0),4),""""))"
End If
If Not Application.Intersect(Target, Range("R4")) Is Nothing And Range("R4").Value = "" Then
Range("R5:R7").Value = ""
End If
'Gestion du remplissage des cellules pour la zone livraison
'Si on sélectionne "SUR SITE :", remplissage des champs de l'adresse en-dessous
If Not Application.Intersect(Target, Sheets("Bon de commande").Range("H9, R9")) Is Nothing And Sheets("Bon de commande").Range("R9").Value = "SUR SITE :" Then 'PROBLEME ICI
Range("R10").Formula = "=IF(VLOOKUP(R9C8,Tableau_Chantiers,2)<>"""",VLOOKUP(R9C8,Tableau_Chantiers,2),"""")"
Range("R11").Formula = "=IF(VLOOKUP(R9C8,Tableau_Chantiers,3)<>"""",VLOOKUP(R9C8,Tableau_Chantiers,3),"""")"
Range("R12").Formula = "=IF(VLOOKUP(R9C8,Tableau_Chantiers,4)<>"""",VLOOKUP(R9C8,Tableau_Chantiers,4),"""")"
Range("R13").Formula = "=IF(VLOOKUP(R9C8,Tableau_Chantiers,5)<>"""",VLOOKUP(R9C8,Tableau_Chantiers,5),"""")"
If Range("R12").Value = "" Then
Range("R12").Formula = "=IF(VLOOKUP(R9C8,Tableau_Chantiers,5)<>"""",VLOOKUP(R9C8,Tableau_Chantiers,5),"""")"
Range("R13").Value = ""
End If
End If
[...]
Application.ScreenUpdating = True 'réactiver le rafraîchissement de l'écran avant exécution de la macro
End Sub
La fonction "If Not Application. Intersect (...) Is Nothing" reste difficile à comprendre et à appréhender.
Je pense qu'il y a une piste de ce côté-là à creuser.
Merci par avance.