OVH Cloud OVH Cloud

Formule à coller dans différentes feuilles

13 réponses
Avatar
akar.serkan
Bonjour =E0 tous,

J'ai un syst=E8me qui me g=E9n=E8re diff=E9rentes feuilles dans lesquelles =
des
tableaux apparaissent. Tous les tableaux sont au m=EAme format, il peut
y avoir simplement le nombre de ligne qui change, selon le nombre de
donn=E9es.

La derni=E8re ligne du tableau repr=E9sente les totaux. Le texte "Total"
se met automatiquement =E0 la derni=E8re ligne (variable) de la premi=E8re
colonne (toujours colonne A).
Sur cette m=EAme ligne, =E0 la colonne I, je voudrais qu'une simple
formule s'incr=E9mente automatiquement. Cette cellule est toujours vide
au d=E9part.

Par exemple, si le tableau a 7 lignes ;

La cellule A7 aura automatiquement le texte "Total"
formule souhait=E9e : I7 =3D T7

Si le tableau a 16 lignes

La cellule A16 aura automatiquement le texte "Total"
formule souhait=E9e : I16 =3D T16


Ainsi de suite.. Ceci serait ma premi=E8re question

Ma deuxi=E8me question, serait de savoir s'il est possible d'effacer les
feuilles dont les tableaux sont vides.

C'est-=E0-dire que le syst=E8me va me g=E9n=E9rer certains tableaux
automatiquement m=EAme s'il n'y a pas de donn=E9e.
Donc le tableau en soit sera toujours l=E0 mais par exemple, dans la
colonne A il n'y aura pas de texte "Total" =E0 la derni=E8re ligne.
Du coup il n'y aura pas besoin d'appliquer la formule =E0 la cellule de
la derni=E8re ligne de la colonne I, il faudrait donc simplement
supprimer la feuille.

Merci beaucoup d'avance pour votre aide.

3 réponses

1 2
Avatar
Francois L
a écrit :
Merci d'avance.


Re,

A priori, la macro qui suit fait ce que tu demandes. Attention de bien
la tester sur des copies compte tenu des risques d'erreur !

Ceci étant dit, je ne sais pas dans quel contexte tu utilises ce
classeur mais il faudrait pouvoir gérer les risques d'erreur, les
problèmes liés à un déclenchement successif de la macro, etc. ce qui
n'est pas une mince affaire sans connaitre l'organisation des données. A
toi de voir s'il ne serait pas préférable de réorganiser tout cela pour
travailler avec des formules dans la feuille plutôt que du VBA ...

La macro travaille en inscrivant des formules dans les feuilles et non
pas des valeurs.

'-------------------------------------------------------------------
Sub efface_et_traite()
' Un classeur doit obligatoirement contenir au moins une feuille !
If ActiveWorkbook.Worksheets.Count = 1 Then Exit Sub
' Suppression des messages d'avertissement
Application.DisplayAlerts = False
' Balayage de toutes les feuilles...
' et effacement sans avertisement de celles
' ou le terme "total" ne figure nulle part dans la colonne A
For Each sh In ActiveWorkbook.Worksheets
derlig = sh.Range("A65432").End(xlUp).Row
If Application.WorksheetFunction.CountIf(sh.Range("A1:A" & derlig),
"total") = 0 Then
If ActiveWorkbook.Worksheets.Count = 1 Then Exit Sub
sh.Delete
Else
' Mise en place des formules dans la colonne T et en I
For Each c In sh.Range("A1:A" & derlig)
If UCase(c) = "TOTAL" Then
For i = 5 To c.Row - 2
sh.Range("T" & i).Formula = "=(P" & i & "/$P$10)*I" & i
Next i
sh.Range("T" & c.Row).FormulaLocal = "=SOMME(T5:T" & c.Row - 2 & ")"
sh.Range("I" & c.Row).Formula = "=T" & c.Row
End If
Next c
End If
Next sh
Application.DisplayAlerts = True
End Sub
'----------------------------------------------------------------------------

--
François L
Avatar
Serkanao
On Aug 15, 1:26 pm, Francois L
wrote:
a écrit :> Merci d'avance.



Ca marche nickel !! J'ai juste changé une ligne

For i = 5 To c.Row - 2
sh.Range("T" & i).Formula = "=(P" & i & "/$P$" & c.Row & ")*I" & i
Next i



Merci beaucoup !
Avatar
Francois L
Serkanao a écrit :

Re,

C'est bien que tu ais changé une ligne, ça prouve que tu as compris
comment ça fonctionne !

--
François L


On Aug 15, 1:26 pm, Francois L
wrote:
a écrit :> Merci d'avance.



Ca marche nickel !! J'ai juste changé une ligne

For i = 5 To c.Row - 2
sh.Range("T" & i).Formula = "=(P" & i & "/$P$" & c.Row & ")*I" & i
Next i



Merci beaucoup !


1 2