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
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
heu.. avant la ligne vous avez pas oublier
activecell.formula... =
ou c'est la photo qui a coupé le code
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 !!!