Calcul identique sur plusieurs feuille

Bonjour, après avoir toujours trouvé une solution grâce à ce forum. Aujourd'hui je n'arrive pas à me sortir de mon impasse.

Cela fait fait deux jours que je suis sur ce problème. Mon problème est tel que

- je suis en train de créer une macro qui s'applique sur toutes les feuilles d'un classeur. jusque la tout va bien. Ma macro s'applique sans afficher d'erreur d'aucune sorte.

- Dans cette marco, à un moment il y a la création d'un tableau que je nomme Tableau3. cependant, pour chaque nouvelle feuille excel renomme le tableau tel que Tabeau3_1, Tableau3_2 ...

Sauf que il arrive un moment où j'effectue des calculs avec les tableaux tel que countif, sum... Les calculs sont les même pour toutes feuilles mais en prenant compte des valeurs du tableau de la feuille active. Dans mon cas cela n'est pas le cas, les calculs sont fait avec le Tableau3.

Comment puis je fais pour que cela ne soit plus le cas et que les calculs soit fait avec les valeurs du tableau de la feuille active?

J'espère avoir été assez clair dans ma demande. Et merci d'avance pour la futur aide ^^

'statistique observatiore
    Sheets(nom).Activate
    ActiveSheet.Range("M7").Select
        'ActiveCell.FormulaR1C1 = "=COUNT(Tableau3[FH since installed])"
    Range("M8").Select
        ActiveCell.FormulaR1C1 = "=COUNTIF(tableau3[Censored data],1)"
    Range("M9").Select
        ActiveCell.FormulaR1C1 = "=COUNTIF(tableau3[Censored data],0)"
    Range("M16").Select
        ActiveCell.FormulaR1C1 = "=MIN(Tableau3[[FH since installed]])"
    Range("M18").Select
        ActiveCell.FormulaR1C1 = "=MAX(Tableau3[[FH since installed]])"
    Range("O16").Select
        ActiveCell.FormulaR1C1 = "=SUM(Tableau3[[FH since installed]])"
    Range("O17").Select
        ActiveCell.FormulaR1C1 = _
            "=SUMIFS(Tableau3[[FH since installed]],Tableau3[Censored data],1)"
    Range("O18").Select
        ActiveCell.FormulaR1C1 = _
            "=SUMIFS(Tableau3[[FH since installed]],Tableau3[Censored data],0)"
    Range("Q16").Select
        ActiveCell.FormulaR1C1 = "=AVERAGE(Tableau3[[FH since installed]])"
    Range("Q17").Select
        ActiveCell.FormulaR1C1 = _
            "=AVERAGEIFS(Tableau3[[FH since installed]],Tableau3[Censored data],0)"
    Range("Q18").Select
        ActiveCell.FormulaR1C1 = _
            "=AVERAGEIFS(Tableau3[[FH since installed]],Tableau3[Censored data],1)"
    Range("S16").Select
        ActiveCell.FormulaR1C1 = "=R16C15/R8C13"
    Range("S17").Select
        ActiveCell.FormulaR1C1 = "=(2*R16C15)/(CHISQ.INV(0.975,2*R8C13+2))"
    Range("S18").Select
        ActiveCell.FormulaR1C1 = "=(2*R16C15)/(CHISQ.INV(0.025,2*R8C13+2))"

Bonjour,

dans le code que vous avez fournie , on peut voire que utiliser "tableau3" pour vos calcul donc c'est normal non ? sinon fuadrai changer le nom de tableau (tableau3_1,tableau3_2...)

le mieux est encore joint un fichier

Oui je vois ce que vous voulez dire. je sais très bien que en mettant Tableau3 cela prend automatique le premier tableau.

Mais comme je l'ai signifié au début. j'ai mis mon code dans une boucle pour l'appliqué a toute les feuilles. au niveau de la création de tableau c'est parfait. Je ne sais juste pas comment faire pour que lors de mes calcul cela sélection le bon tableau.

Voici mon fichier qui est encore un peut brouillon.

  • dans le module 1 l'on trouve le code qui s'applique à toute les feuilles du classeurs
  • le module 2 quant à lui est celui qui va faire appel a toutes les fonctions du fichier, ainsi que la création du fameux tableau
  • le probème se trouve a la fin du module 4 à partir de la 545 ligne
10test2-2.xlsm (114.06 Ko)

wow un sacrée paquet de code

quelque remarque sur le code :

  • trop de "select" et "active" ^^
  • beaucoup de ligne inutile
  • le ".FormulaR1C1" est utiliser pour mettre une formule excel dans une cellule, si c'est pour des valeur standard vous avez le ".value" (le ".FormulaR1C1" fonctionne mais elle n'est pas la pour sa)
  • le nombre de module est hallucinant

pour votre problème :

il faudra trouver une variable (par exemple "i") qui renvoie au numéro de feuille dans laquelle vous Etes (afin de récupérer le nom du tableau "tableau3_i") et ensuite remplacer les formule :

if i <> 0 then
"=COUNTIF(tableau3_" & i & "[Censored data],1)"
end if 
  • oui oui ^^, je me doute qu'il y a beaucoup de ligne inutile. j'ai commencé à codé sous VBA il y a deux semaine ^^
  • je pensais dégraisser un peux celui ci lorsqu'il sera opoérationnel, afin de simplifier la lecture de celui ci ^^

- J'ai essayer votre méthode, excel n'accepte pas cette notation. sans compter que je ne suis pas sûre de savoir où introduire la variable i

Dim i As String
   Dim b As String

   b = "count(Tableau2[Part Number])"
    For i = 0 To b

        If i <> 0 Then
        Range("M7").Select= "=COUNTIF(tableau3_"&i&"[Censored data],1)"

        End If
    Next 

la variable i est à mettre dans le module4 avec tout simple :

dim i as integer
i = ActiveSheet.index - 1

/!\ pour que cela fonctionee il faudra placer vos feuille dans l'ordre :

la feuille contient "tableau3" doit être placer tout a gauche

la feuille contient "tableau3_1" doit être placer en 2eme position

la feuille contient "tableau3_2" doit être placer en 3eme position

capture

je vois parfaitement ce que vous voulez dire

Cependant j'obtient une erreur de compilation. voir ci dessous

capture

heu.. avant la ligne vous avez pas oublier

activecell.formula...  = 

ou c'est la photo qui a coupé le code

euhh oui c'était de ma faute ^^

Mais même ainsi, j'obtiens quand même une erreur de compilation

capture1

attention a bien espacer (mettre un espace suffit) avec et après "&"

Ah mince, je pensais que cela allais le faire automatiquement

Cela marche à merveille !!!!!!

Merci beaucoup pour votre aide !!!!!!!!!!


ahhhhhh je pensais que les espace allais se mettre automatiquement

Cela fonctionne à merveille!!!

Merci bcp pour votre aide !!!

Rechercher des sujets similaires à "calcul identique feuille"