Macro Inserer une formule avec condition

Banjounet Messages postés 2 Date d'inscription vendredi 14 décembre 2018 Statut Membre Dernière intervention 14 décembre 2018 - Modifié le 14 déc. 2018 à 11:39
cs_Le Pivert Messages postés 7893 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 19 mai 2023 - 14 déc. 2018 à 15:01
Bonjour à tous,

Etant méga débutant en VBA j'ai réussi, en récupérant des bouts de code à gauche et à droite, à faire la macro suivante:
Sub RemplissageTableau()
Application.ScreenUpdating = False
ActiveWorkbook.RefreshAll
Dim c As Range
Dim LigneBlanche
LigneBlanche = "=IF(OR(RC13=""AGPRO"",RC13=""AGTEC"",RC13=""AGING"",RC13=""AGAPP""),0,RC[-2])"
For I = 12 To Sheets.Count
With Sheets(I)
For Each c In .Range("T1:U250")
If c.Interior.Color = 16777214 Then c.Formula = LigneBlanche
Next c
End With
Total
Next I
End Sub

Celle ci me permet de checker toutes les cellules de la plage T1:U250 et d'insérer dans celle donc la couleur "16777214" (blanc) la formule LigneBlanche.
Cette macro fonctionne très bien.

Cependant, le tableau concerné va être repris par différent service, et il est probable qu'il dépasse la ligne 250 et que la couleur du tableau soit modifiée (les goûts et les couleurs).

Je sais qu'il est possible de faire un code permettant de faire en sorte que la Macro vérifie tout les lignes d'une colonne avec
LastLig = .Cells(.Rows.Count, 1).End(xlUp).Row
Mais cela dépasse mes compétences, je comprend pas comme cela fonctionne...
De plus je sais que les indices de couleurs dans les macro sont pas conseillés. Du coup est-il possible de faire en sort que la macro insère une formule dans les cases de la colonnes T et U si celle des colonnes R et S ne sont pas vide ?

Ya t il une âme charitable pour m'aider et pour m'expliquer comment cela fonctionne ?!

Un grand merci d'avance pour vos retour!

2 réponses

cs_Le Pivert Messages postés 7893 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 19 mai 2023 136
14 déc. 2018 à 12:07
Bonjour,

comme ceci:

Dim c As Range
 With Sheets("Feuil1")
         For Each c In .Range("T1:U" & Range("U" & Rows.Count).End(xlUp).Row)
             If c.Value = "" Then MsgBox c.Address & "vide" 'c.Formula = LigneBlanche
         Next c
     End With


0
Banjounet Messages postés 2 Date d'inscription vendredi 14 décembre 2018 Statut Membre Dernière intervention 14 décembre 2018
Modifié le 14 déc. 2018 à 14:59
Bonjour,
Merci pour l'aide, mais de nouveaux problèmes sont apparu avoir adapté ton code.

J'ai donc ces codes la maintenant:
Sub RemplissageTableau()
Application.ScreenUpdating = False
ActiveWorkbook.RefreshAll
Dim c As Range
Dim EffNec
EffNec = "=IF(OR(RC13=""AGPRO"",RC13=""AGTEC"",RC13=""AGING"",RC13=""AGAPP""),0,RC[-2])"

For I = 12 To Sheets.Count
With Sheets(I)
For Each c In .Range("T1:U" & Range("U" & Rows.Count).End(xlUp).Row)
If c.Value = "" Then c.Formula = EffNec
Next c
End With
Next I
Total
End Sub


Et

Sub Total()
Dim LastLig As Long, Deb As Long, Fin As Long
Dim T As Double, U As Double
Dim Prem As String
Dim c As Range

For I = 12 To Sheets.Count
With Sheets(I)
LastLig = .Cells(.Rows.Count, 1).End(xlUp).Row
Set c = .Range("B2:B" & LastLig).Find("Total*", LookIn:=xlValues, lookat:=xlPart)
Deb = 2
If Not c Is Nothing Then
Prem = c.Address
Do
Fin = c.Row - 1
.Range("T" & Fin + 1).Formula = "=SUMIF(E" & Deb & ":E" & Fin & ",""<>"",T" & Deb & ":T" & Fin & ")"
.Range("U" & Fin + 1).Formula = "=SUM(U" & Deb & ":U" & Fin & ")"
Deb = Fin + 2
T = T + .Range("T" & Fin + 1)
U = U + .Range("U" & Fin + 1)
Set c = .Range("B2:B" & LastLig).FindNext(c)
Loop While Not c Is Nothing And c.Address <> Prem
End If
.Range("T" & LastLig).Resize(, 2) = Array(T, U)

End With
Next I
End Sub


Je sais pas pourquoi mais quand j'execute la macro RemplissageTableau à l'aide d'un bouton, il n'y à que la Macro Total qui s'enclenche...
Et le 2e problème est que la Macro s'éxecute bien sur les onglets concerné (de 12 à 17) Mais elle sur les feuilles 13 à 17 elle s'éxecute sur les mêmes lignes que le tableau feuille 12, alors que les tableau sont plus grand ou plus petit :(
0
cs_Le Pivert Messages postés 7893 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 19 mai 2023 136
14 déc. 2018 à 15:01
Dans la macro RemplissageTableau il n'y a pas le lancement de la macro Total. Donc tu as sans doute omis de tout expliqué!
0