Inserer des formules dans un onglet VBA
Bonjour! J'ai des difficultees avec ce code.
Je dois remplacer un onglet (sheet1) a chaque utilisation pour mettre a jour les donnees (trop long de copier 5000+ lignes d'un autre document)
donc j'efface l'onglet existant sheet1 et le remplace par un nouveau, tirer dun document a un endroit specifique.
comme jefface sheet1, les formules ailleurs dans mon document n'ont plus de references.... donc causent erreurs.
je souhaite pallier a cette problematique et reinserant les formules a chaque "effacage & reinsertion" de sheet1.
ca ne semble pas vouloir cooperer...
De plus, je crois que cest lier a une petite problematique remarquee. quand je regarde mon fichier apres avoir fait un essai, aucune sheet1 nest visible. pourtant, j'ai vu le document ouvrir et tout... selon ma comprehension, a la fin du code, mon fichier doit sauvegarder avec un onglet sheet1 present. (ce qui nest pas le cas presentement.)
Voir notes a travers le code pour une tentative dexplications...
J'ai comme limpression que ces deux problematiques sont liees, mais n'ai aucune piste de solution sur comment regler ca (ayant tenter plusieurs ordre de code... )
Merci de votre attention & assistance, en esperant avoir ete claire....
Sub PullFromFile_Click()
Dim wkb As Workbook, wkbFrom As Workbook
Dim fromPath As String
fromPath = Sheets("MASTER").Range("A1")
If Right(fromPath, 1) <> "\" Then fromPath = fromPath & "\"
Set wkb = ThisWorkbook
Set wkbFrom = Workbooks.Open(fromPath & "Book1.xlsx")
'Pas sur ici... je ne comprends pas ou mettre "effacer longlet sheet1 existant" afin de le remplacer par un nouveau copier du fichier trouver ci-'haut. Tel quel, ca semble toujours chercher a effacer sheet1.
Application.DisplayAlerts = False
wkb.Sheets("sheet1").Delete
Application.DisplayAlerts = True
For Each sh In wkbFrom.Sheets
If Application.CountA(sh.Cells) > 0 Then
sh.Copy After:=Sheets(Sheets.Count)
Exit For
End If
'ici je copie une colone et la colle dans le nouvel onglet sheet1. pas sur que ca fonctionne car quand je regarde mon fichier a la fin du code, 'longlet sheet1 nexiste pas....
wkb.Sheets("Report transit").Range("T:T").Copy Sheets("sheet1").Range("J:J")
'comme jefface un onglet qui est une source pour plusieurs formules dans mon document, je recois #REF (car jai effacer longlet reference...) il 'semble que meme si un onglet du meme nom s'y retrouve quelques secondes plus tard, les references sont perdues. Donc, je souhaite les reinscrires 'via VBA.
'et Ca ne fonctionne PAS! :(
'Aussi, A5 doit incrementer pour chaque ligne (a6 a7... pour garder la bonne reference. je n'ai jamais inserer de formules via vba)
With wkb.Worksheets("REPORT transit")
.Range(E5:E300").Formula = "=SUMIF('sheet1'!$D$2:$D$300,""="" &'REPORT transit'!A5,'sheet1'!$H$2:$H$300)"
.Range(H5:H300").Formula = "=SUMIF('sheet1'!$D$2:$D$300,""="" &'REPORT transit'!A5,'sheet1'!$J$2:$J$300)"
End With
Next
wkbFrom.Close False
wkb.Save
wkb.Worksheets("MASTER").Activate
Call ErrorCheck
End Sub
bonjour,
une proposition (non testée)
Sub PullFromFile_Click()
Dim wkb As Workbook, wkbFrom As Workbook
Dim fromPath As String
fromPath = Sheets("MASTER").Range("A1")
If Right(fromPath, 1) <> "\" Then fromPath = fromPath & "\"
Set wkb = ThisWorkbook
Set wkbFrom = Workbooks.Open(fromPath & "Book1.xlsx")
'Pas sur ici... je ne comprends pas ou mettre "effacer longlet sheet1 existant" afin de le remplacer par un nouveau copier du fichier trouver ci-'haut. Tel quel, ca semble toujours chercher a effacer sheet1.
Application.DisplayAlerts = False
On Error Resume Next 'passe à l'instruction suivante si la feuille sheet1 n'existe pas
wkb.Sheets("sheet1").Delete
On Error GoTo 0
Application.DisplayAlerts = True
For Each sh In wkbFrom.Sheets
If Application.CountA(sh.Cells) > 0 Then
sh.Copy After:=Sheets(Sheets.Count)
Sheets(Sheets.Count).Name = "Sheet1"
Exit For
End If
'ici je copie une colone et la colle dans le nouvel onglet sheet1. pas sur que ca fonctionne car quand je regarde mon fichier a la fin du code, 'longlet sheet1 nexiste pas....
wkb.Sheets("Report transit").Range("T:T").Copy Sheets("sheet1").Range("J:J")
'comme jefface un onglet qui est une source pour plusieurs formules dans mon document, je recois #REF (car jai effacer longlet reference...) il 'semble que meme si un onglet du meme nom s'y retrouve quelques secondes plus tard, les references sont perdues. Donc, je souhaite les reinscrires 'via VBA.
'et Ca ne fonctionne PAS! :(
'Aussi, A5 doit incrementer pour chaque ligne (a6 a7... pour garder la bonne reference. je n'ai jamais inserer de formules via vba)
With wkb.Worksheets("REPORT transit")
.Range("E5:E300").Formula = "=SUMIF('sheet1'!$D$2:$D$300,""="" &'REPORT transit'!A5,'sheet1'!$H$2:$H$300)"
.Range("H5:H300").Formula = "=SUMIF('sheet1'!$D$2:$D$300,""="" &'REPORT transit'!A5,'sheet1'!$J$2:$J$300)"
End With
Next
wkbFrom.Close False
wkb.Save
wkb.Worksheets("MASTER").Activate
Call errorcheck
End Sub
Bonjour!!! Merci de l'aide!
Oui et non apres le test.
Oui car je n'ai plus de messages d'erreurs,
non car l'onglet sheet1 DOIT exister (sheet1 existe au depart, est remplacer par un autre du meme nom par la suite, qui doit rester dans ce document jusqu'a sa prochaine utilisation.)
je ne vois pas ou mettre cette partie de code pour que l'onglet soit effacer et reinserer au bon moment.
dois-je faire un nouveau sujet pour cette question (meme si elle est liee car les formules ne fonctionnent actuellement pas... )
Je crois comprendre l'erreur sur les formules a inserer, il me manquait des " ! (Merci)
je crois avoir regler cette partie du probleme.
je vais faire un autre sujet plus precis pour les questions suivantes.
Merci beaucoup de votre assistance!