[XL-2010] Comment exporter des formules dans des macros ?

Bonjour,

Je viens à vous car mon chef me demande de faire une macro pour excel et

je n'y connais rien (c'est la première fois que je touche à de la macro

sous excel et au VBA). J'essaie de créer un bouton "Dispatch" qui

permet permet d’éclater les données d'une feuille en autant de fichier

qu'il y a d’occurrence dans une colonne et à inserer dans le dit fichier

toutes les lignes qui contiennent cette occurence. Jusque là "facile".

j'ai trouvé un petit projet qui m'a bien guidé.

Ma question porte sur une colonne qui contient une formule. Dans le dit

tableau il y a les semaines et chaque semaine une ressource doit saisir

dans son fichier le temps consacré à la tache (colonne H à BH). Une

colonne (G) contient la formule qui m'ajoute le temps de chaque semaine.

Mais le souci est que lors de mon dispatch, je transfere dans le fichier

créé la colonne G contient le temps dans ma source initiale (0 donc) et

non la formule a appliquer sur les cellules de mon tableau de

destination...

Je vous joins ici mon code :

Option Explicit Public critere% Sub dispatcher() Dim Tbl As Variant, data As Variant, I% Dim dico1 As Object, cle1 As Variant, result1 As Variant Dim wb As Excel.Workbook Dim MonRepertoire, Repertoire As FileDialog, racine As String Dim colonne$ Dim colonne2 As Byte 'colonne = Application.InputBox("Entrez la colonne servant de critère de dispatching : ", "Saisie en texte (i.e : A B ...)", Type:=2) 'critere = ActiveSheet.Columns(colonne).Column UserForm1.Show If critere = 0 Then Exit Sub racine = Split(ThisWorkbook.Name, ".")(0) Set Repertoire = Application.FileDialog(msoFileDialogFolderPicker) Application.FileDialog(msoFileDialogFolderPicker).Title = "Choix du répertoire de stockage des fichiers générés" Repertoire.Show If Repertoire.SelectedItems.Count = 0 Then Exit Sub MonRepertoire = Repertoire.SelectedItems(1) data = Cells(Rows.Count, 1).End(xlUp).CurrentRegion Set dico1 = CreateObject("Scripting.Dictionary") For I = LBound(data) + 1 To UBound(data) ' hors en-tête If colonne2 = 7 Then Range.dico1(data(I, critere)).FormulaR1C1 = "=SUM(RC[1],RC[53])" Else dico1(data(I, critere)) = "" End If Next Application.ScreenUpdating = False For Each cle1 In dico1.Keys result1 = filtreArray(data, critere, cle1) Set wb = Workbooks.Open(ThisWorkbook.Path & "\" & "Model.xlsx") wb.Sheets(1).Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Resize(UBound(result1, 1), UBound(result1, 2)) = result1 wb.SaveAs (MonRepertoire & "\" & racine & "_" & cle1 & ".xlsx") wb.Close Set wb = Nothing Next Application.ScreenUpdating = True MsgBox "Terminé, fichiers sauvegardés sous """ & MonRepertoire & "\" & """ !" End Sub

Voici qq données (fichier source simplifié)

Ligne 4 (en-tetes) : A: Taches ; F : Ressources; G : Total d'heure, H : Semaine 1, I : Semaine 2 ....BH : Semaine 53

Ligne 5 : Tache 01; Alpha; =SOMME(H5:BH5); (0partout apres)

Ligne 6 : Tache 02; Alpha; =SOMME(H6:BH6); (0Partout apres)

Ligne 7 : tache 03; Beta; =SOMME(H7:BH7)

Ligne 8 : Tache 04; Alpha; =SOMME(H8:BH8)

Fichier destination attendu Alpha.xlsx:

Ligne 4 : A: Taches ; F : Ressources; G : Total d'heure, H : Semaine 1, I : Semaine 2 (en tetes)....BH : Semaine 53

Ligne 5 : Tache 01; Alpha; =SOMME(H5:BH5); (0partout apres)

Ligne 6 : Tache 02; Alpha; =SOMME(H6:BH6); (0Partout apres)

Ligne 7 : Tache 04; Alpha; =SOMME(H7:BH7)

(et quand j'insere 2 en colonne H4 et 28 en L4 je veux par la suite avoir G4 = 30)

Ma question est donc : Comment faire pour que le contenu de ma cellule G

de mon fichier de destination contienne la formule à appliquer sur les

colonne de la feuille créée par ma macro de Dispatch ? et surtout où

l’insérer dans le code présenté.

merci de votre aide.

Bonjour,

Je pense que votre problème n'est pas bien présenté et vous auriez dû utiliser les balises </> pour poster votre code .

En tout cas, il faut s'intéresser à l'une des propriétés suivantes :

Range("ref").formula

Range("ref").formulaR1C1

Range("ref").formulalocal

Elles sont en lecture écriture, ce qui signifie qu'il est possible de récupérer une formule pour l'insérer ailleurs...

Sinon, parfois, il est préférable de construire sa formule dans le code directement.

Cdlt,

Rechercher des sujets similaires à "2010 comment exporter formules macros"