Simplification de code VBA

Bonjour à tous,

J’ai besoin de votre aide ;

Y aurait-il une solution pour simplifier ce code :

For s = 4 To 45 Step 3

If Cells(4, s) <> "" Then

Cells(4, 71).FormulaR1C1 = "=RC[-66]/RC[1]"

Cells(4, 74).FormulaR1C1 = "=RC[-67]/RC[1]"

Cells(4, 77).FormulaR1C1 = "=RC[-68]/RC[1]"

Cells(4, 80).FormulaR1C1 = "=RC[-69]/RC[1]"

Cells(4, 83).FormulaR1C1 = "=RC[-70]/RC[1]"

Cells(4, 86).FormulaR1C1 = "=RC[-71]/RC[1]"

Cells(4, 89).FormulaR1C1 = "=RC[-72]/RC[1]"

Cells(4, 92).FormulaR1C1 = "=RC[-73]/RC[1]"

Cells(4, 95).FormulaR1C1 = "=RC[-74]/RC[1]"

Cells(4, 98).FormulaR1C1 = "=RC[-75]/RC[1]"

Cells(4, 101).FormulaR1C1 = "=RC[-76]/RC[1]"

Cells(4, 104).FormulaR1C1 = "=RC[-77]/RC[1]"

Cells(4, 107).FormulaR1C1 = "=RC[-78]/RC[1]"

Cells(4, 110).FormulaR1C1 = "=RC[-79]/RC[1]"

Cells(4, 113).FormulaR1C1 = "=RC[-80]/RC[1]"

Cells(4, 116).FormulaR1C1 = "=RC[-81]/RC[1]"

Cells(4, 119).FormulaR1C1 = "=RC[-82]/RC[1]"

Cells(4, 122).FormulaR1C1 = "=RC[-83]/RC[1]"

Cells(4, 125).FormulaR1C1 = "=RC[-84]/RC[1]"

Cells(4, 128).FormulaR1C1 = "=RC[-85]/RC[1]"

Cells(4, 131).FormulaR1C1 = "=RC[-86]/RC[1]"

End If

Next s

Par avance je vous remercie pour votre implication.

FG

Bonjour,

Dans la logique je dirais :

Sub FORMULE()
i = 0
For s = 4 To 45 Step 3
    If Cells(4, s) <> "" Then
        Cells(4, 67 + s).FormulaR1C1 = "=RC[-" & 66 + i & "]/RC[1]"
        i = i + 1
    End If
Next s
End Sub

A tester.

Cdlt,

Edit : en plus cours avec une seule variable :

Sub FORMULE()
For s = 1 To 15
    If Cells(4, 1 + s * 3) <> "" Then Cells(4, 68 + s * 3).FormulaR1C1 = "=RC[-" & 65 + s & "]/RC[1]"
Next s
End Sub

Bonsoir Ergotamine,

En tout premier lieu, je te remercie pour ton aide.

En ce qui concerne ton code, je l'ai testé sur mon application, mais malheureusement, il fonctionne en partie. En fait il y a un décalage au bout d'un certain moment. la variable devrait être dans la cellule (CE4) et se retrouve en (DI4).

image

Cordialement

FG

Bonjour,

On ne voit pas grand chose sur votre capture d'écran. De plus, je ne trouve aucun décalage en imprimant les variables de la boucle et vos formules. Je ne comprend de base pas trop le code avec une boucle étant donné que vous ne vous en resservez pas derrière dans vos formules ... Que cherchez vous à faire exactement ?

Dans mon code de l'edit :

Cells(4, 68 + s * 3).FormulaR1C1 = "=RC[-" & 65 + s & "]/RC[1]"
Quand s = 1 : Cells(4, 71).FormulaR1C1 = "=RC[-66]/RC[1]"
Quand s = 2 : Cells(4, 74).FormulaR1C1 = "=RC[-67]/RC[1]"
Etc etc ....

Un fichier représentatif avec le résultat attendu serait le bienvenu pour pouvoir tester.

Cdlt,

De nouveau bonsoir,

Je vais préparer un fichier pour expliquer plus explicitement ma demande.

De nouveau un grand merci pour votre implication.

Cordialement

FG

Bonjour à tous,

Je post mon projet pour que vous puissiez avoir une idée plus précise sur le problème cité ci-dessus.

Fonctionnement :

  • Remplir le combo « Cls Elv» pour ouvrir la liste « Elv »
  • Date
  • Remplir le combo « Pro »
  • Choisir item combo « Comp »
  • Les textbox se remplissent automatiquement
  • Mettre une note sur les différents textbox « Comp évaluées » visible
  • Valider avec TPE 2MVP

Les différents items s’enregistreront sur la feuille Excel TPE 2MVP sur les cellules « D à AS » sur les cellules « BS à EB » je calcule le pourcentage de réussite de la Comp (Note obtenue de la Comp /valeur de la Comp)

J’espère avoir donnée le maximum d’infos !!!!

Cordialement

FG

13test-svi.zip (882.76 Ko)

Bonjour,

Désolé je vous ai totalement oublié ...

Normalement le code suivant devrait fonctionné au vu du fichier (merci pour les explications très claires) :

For s = 1 To 15
    If Cells(4, s * 2 + 2) <> "" Then Cells(4, 68 + s * 3).FormulaR1C1 = "=RC[-" & 65 + s & "]/RC[1]"
Next s

Lorsque j'ai dans la notation de la com une croix sur la compétence alors la formule est bien insérée dans les % de réussite de la comp evaluées (ce qui me semble être le raisonnement global).

Exemple test : Pour Loïc en 2MV, objet MCL 102- alors il doit être évalué sur CC3.1 / CC4.3 CC5.1 CC 5.2 et CC6.3. % bien calculé sur les compétences correspondantes sur la plage BS3 à EB3. C'est juste étrange car sur ce cas, je n'ai pas de valeurs en DJ3, cette boucle semble trop courte :

        For R = 71 To 112 Step 3 'Devrait aller jusqu' 132 normalement

Je vous laisse investiguer sur ce dernier point !

Cdlt,

Bonsoir Ergotamine,

Nickel, un grand merci pour votre aide.
Ça m'a débloqué une bonne partie de mon projet.
je vous souhaites une bonne soirée
Cordialement
FG
Rechercher des sujets similaires à "simplification code vba"