La multiplication de cellule variable d'une colonne par la valeur d'une cellule

Résolu
DEVPLUS Messages postés 30 Statut Membre -  
 Utilisateur anonyme -
Bonjour cher forum,

Je rame sur le problème suivant :

Mon code est le suivant :
Sub calcul()
Dim sh As Worksheet

Set sh = Worksheets("Info")
sh.Activate
Dim i As Integer
dim j as integer
For i = 1 To 100
For j = 1 To 1

While sh.Cells((i + 18), 2) <> ""
If sh.Cells((i + 18), 5).Value & sh.Cells((i + 18), 6).Value <> "" Then
sh.Cells((i + 18), 7).Value = sh.Cells((i + 18), 5).Value * sh.Cells((i + 18), 6).Value
sh.Cells((i + 18), 8) = sh.Cells((i + 18), 6).Value * sh.Cells(12, 10).Value
sh.Cells((i + 18), 9) = sh.Cells((i + 18), 5).Value * sh.Cells((i + 18), 8).Value
sh.Cells(19, 18) = Application.WorksheetFunction.Sum(sh.Range("i19:i400"))
sh.Cells(20, 18) = Application.WorksheetFunction.Sum(sh.Range("c14,c15,c16,f11,f12,f13,f15,f16,j14,j15,j16,t22"))
' calcul du coefficient
sh.Cells(21, 18).Value = "=R[-1]C[0]/R[-2]C[0]"

sh.Cells((i + 18), 17).Value = sh.Cells((i + 18), 8).Value * sh.Cells(21, 18).Value

End If
i = i + 1
Wend
Next j
Next i

End Sub
Je voudrais que dans la cellule Q(i+18), la formule entrée soit H(i+18)*(R21)
Évidemment, cela ne fonctionne pas.. j'ai fait plusieurs recherches sur ce forum et sur google mais en vain.. Je me résout à demander votre aide..

merci!

2 réponses

  1. Utilisateur anonyme
     
    Bonsoir

    tu apprécies que des bénévoles te répondent et résolvent tes problèmes.
    Poster un code avec la coloration syntaxique facilite la lecture et donc la vie des bénévoles qui t'aident.
    Dans ton dernier post il y a à peine quelques jours https://forums.commentcamarche.net/forum/affich-35661625-rechercher-une-reference-a-partir-de-textbox#1 , yg_be te l'as encore rappelé, et pourtant, encore une fois tu n'as pas fait l'effort.... Tu vas te contenter t'attendre qu'un modérateur édite ton message pour toi.

    Ben tu vois, ça ne me donne pas envie de t'aider.
    0
    1. DEVPLUS Messages postés 30 Statut Membre
       
      Je vois que tu n'as pas bien suivi cette discussion, car ce que j'ai mis fonctionner bien, j'ai demandé de réduire le code que j'ai posté, et la proposition de yg_be ne fonctionner pas comme le code que j'ai mis,
      0
    2. Utilisateur anonyme
       
      Peu importe ce que tu demandes, ton code n'est pas lisible, à chacune de tes questions, au moins une fois il t'es demandé d'utiliser la coloration syntaxique (tu trouveras le lien vers la procédure d'utilisation dans chacune des tes discussion précédente).
      Puisque tu ne fais pas l'effort de rendre ton code présentable, pourquoi nous ferions l'effort de t'aider bénévolement.
      0
    3. DEVPLUS Messages postés 30 Statut Membre
       
      Désolé, je coroyais l'avoir fait
      
      

      Mon code est le suivant :
      Sub calcul()
      Dim sh As Worksheet

      Set sh = Worksheets("Info")
      sh.Activate
      Dim i As Integer
      dim j as integer
      For i = 1 To 100
      For j = 1 To 1

      While sh.Cells((i + 18), 2) <> ""
      If sh.Cells((i + 18), 5).Value & sh.Cells((i + 18), 6).Value <> "" Then
      sh.Cells((i + 18), 7).Value = sh.Cells((i + 18), 5).Value * sh.Cells((i + 18), 6).Value
      sh.Cells((i + 18), 8) = sh.Cells((i + 18), 6).Value * sh.Cells(12, 10).Value
      sh.Cells((i + 18), 9) = sh.Cells((i + 18), 5).Value * sh.Cells((i + 18), 8).Value
      sh.Cells(19, 18) = Application.WorksheetFunction.Sum(sh.Range("i19:i400"))
      sh.Cells(20, 18) = Application.WorksheetFunction.Sum(sh.Range("c14,c15,c16,f11,f12,f13,f15,f16,j14,j15,j16,t22"))
      ' calcul du coefficient
      sh.Cells(21, 18).Value = "=R[-1]C[0]/R[-2]C[0]"


      sh.Cells((i + 18), 17).Value = sh.Cells((i + 18), 8).Value * sh.Cells(21, 18).Value


      End If
      i = i + 1
      Wend
      Next j
      Next i

      End Sub
      Je voudrais que dans la cellule Q(i+18), la formule entrée soit H(i+18)*(R21)
      Évidemment, cela ne fonctionne pas.. j'ai fait plusieurs recherches sur ce forum et sur google mais en vain.. Je me résout à demander votre aide..

      merci!
      0
    4. DEVPLUS Messages postés 30 Statut Membre
       
      Sub calcul() 
      Dim sh As Worksheet 
      
      Set sh = Worksheets("Info") 
      sh.Activate 
      Dim i As Integer 
      dim j as integer 
      For i = 1 To 100 
      For j = 1 To 1 
      
      While sh.Cells((i + 18), 2) <> "" 
      If sh.Cells((i + 18), 5).Value & sh.Cells((i + 18), 6).Value <> "" Then 
      sh.Cells((i + 18), 7).Value = sh.Cells((i + 18), 5).Value * sh.Cells((i + 18), 6).Value 
      sh.Cells((i + 18), 8) = sh.Cells((i + 18), 6).Value * sh.Cells(12, 10).Value 
      sh.Cells((i + 18), 9) = sh.Cells((i + 18), 5).Value * sh.Cells((i + 18), 8).Value 
      sh.Cells(19, 18) = Application.WorksheetFunction.Sum(sh.Range("i19:i400")) 
      sh.Cells(20, 18) = Application.WorksheetFunction.Sum(sh.Range("c14,c15,c16,f11,f12,f13,f15,f16,j14,j15,j16,t22")) 
      ' calcul du coefficient 
      sh.Cells(21, 18).Value = "=R[-1]C[0]/R[-2]C[0]" 
      
      
      sh.Cells((i + 18), 17).Value = sh.Cells((i + 18), 8).Value * sh.Cells(21, 18).Value 
      
      
      End If 
      i = i + 1 
      Wend 
      Next j 
      Next i 
      
      End Sub 
      0
  2. Utilisateur anonyme
     

    1- pourquoi nous avons utilisé 02 variables pour les mêmes lignes (i,x)
    ben c'est toi qui à mis x dans le 2eme for, i aurait marché pareil

    2-les colonnes sh.Cells(x, 17),sh.Cells(x, 10),sh.Cells(x, 11) sont rempli jusqu'à la ligne 100
    2 fois (donc 3 maintenant) je t'ai écrit
    For i = 19 To 118
    pas 100
    0
    1. DEVPLUS Messages postés 30 Statut Membre
       
      Merci Whismeril,
      Maintenant l'operation fonctionne bien:
      Dim x As Integer
      For x = 19 To 100
      If sh.Cells(x, 8) = "" Then
      sh.Cells(x, 10) = ""
      Else
      If sh.Cells(x, 8) <> "" Then
      sh.Cells(x, 17).Formula = sh.Cells(x, 8) * sh.Cells(21, 18)
      sh.Cells(x, 10).Formula = sh.Cells(x, 8) + sh.Cells(19, 17)
      sh.Cells(x, 11).Formula = sh.Cells(x, 10) * sh.Cells(19, 5)
      End If
      End If
      Next x
      End Sub
      0
    2. Utilisateur anonyme
       
      De rien

      mais le for avec le x ne devrait il pas finir à 118 lui aussi?
      0