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!

Rechercher des sujets similaires à "inserer formules onglet vba"