Formule visual basic

Résolu
Bonjour,
Est-ce que qqn comprends cette instruction "ActiveCell.FormulaR1C1 = "=R21C7*R[-1]C" en visual basic et pourrais me dire à quoi correspond chaque sigle car j'ai besoin de la modifier. Normalement ça devrais correspondre à qqch comme un produit entre deux cellules dont une des cellules dont on fixe la valeur avec le sigle $.
et deuxième question, dans une boucle for, comme on fait pour appeler la cellule, colonne ou ligne i?
merci
Configuration: Windows XP Internet Explorer 6.0

8 réponses

  1. Contributeur
    a mon avis:
    "ActiveCell.FormulaR1C1 = "=R21C7*R[-1]C"
    la formule de la cellule active est égal à : la case (ligne 21, colone 7) x case (ligne précédente, colone actuelle)
    0
    1. "ActiveCell.FormulaR1C1 = "=R21C7*R[-1]C"
      ActiveCell = cellule active donc la cellule selectionnée
      FormulaR1C1 = tu vas écrire une formule
      cette formule, c'est : ligne21colonne7 (figée) * la ligne (avant :-1) de la même colonne
      donc= $I$21*i24

      2)
      sub test()
      for i=1 to 10
      cells(i,2)=i
      next i
      end sub

      cela écrira en colonne B 1 à B10 les chifres 1 à 10

      A+
      0
      1. bonjour

        je vous ecrit par ce que jai un ptit probleme

        es ce que vous pouvez me dire commen ca ce fai que ca marche pa mon code
        jai declarer une variable globale dans un userform2

        option explicit
        Public col As string

        et dans le userform2, ya un textbox
        dans le userform initializ jai mis ca :

        Me.TextBox430.Text = Sheets(1).Cells(1, col).Text

        et jai un autre userform1 avec deux bouton option

        bouton option 1
        col = ("C")
        userform2.show

        bouton option 2
        col = ("D")
        userform2.show

        je comprend pa ca devrai marche ? non , pouvez vous maider svp , ca fai deus jour je me casse la tete avec ca

        merci de votre aide
        0
      2. Contributeur
        @amine69500merci d'ouvrir ton propre post, ainsi ca facilitera le traitement des problèmes ...
        Bonne journée
        0
    2. j'ai encore qques erreurs dans mon programme, je pense qu'elles sont liées à une mauvaise syntaxe pour la sélection des ligne, colonnes, cellules avec les i
      voici mon programme :
      Sub conso()
      '
      ' conso Macro
      ' Macro enregistrée le 23/06/2009 par libreservicemp
      '

      '
      For i = 22 To 90
      Rows("i:i").Select
      Selection.insert Shift:=xlDown
      Range("Hi").Select
      ActiveCell.FormulaR1C1 = "=RiC7*R[-1]C"
      Range("Hi").Select
      Selection.AutoFill Destination:=Range("Hi:Ji"), Type:=xlFillDefault
      Range("Hi:Ji").Select
      Selection.NumberFormat = "0"
      Next i
      End Sub

      ce que je voudrais faire :
      pour i de 22 à 90
      je sélectionne la ligne, j'insère une ligne au-dessus
      je sélectionne la cellule Hi
      je rentre la formule suivante dedans "=$G$[i-1]*H[i-1]"
      puis je sélectionne Hi et je fais glisser le résultat dans Ii et Ji
      enfin, je change le format des trois cellules en nombre sans décimale

      je ne sais pas si c'est clair?

      est-ce que qqn peut corriger mes erreurs?

      merci
      0
      1. Bon je te corrige mais... ce n'est pas clair.
        si ta procedure est juste.
        la syntaxe c'est ça.

        Sub conso()
        '
        ' conso Macro

        For i = 22 To 90
        Rows(i).Select
        Selection.Insert Shift:=xlDown
        Range("H" & i).Select
        ActiveCell.FormulaR1C1 = "=R" & i & "C7*R[-1]C"
        Range("H" & i).Select
        Selection.AutoFill Destination:=Range("H" & i & ":J" & i), Type:=xlFillDefault
        Range("H" & i & ":J" & i).Select
        Selection.NumberFormat = "0"
        Next i
        End Sub

        Dis-moi si c'est ce que tu veux.
        A+
        0
        1. merci pour ta réponse, ça marche bien ... mais ça ne correspond pas à ce que je voulais faire
          en fait ce que j'aimerais faire c'est pour un tableur que va de la ligne 21 à 90,
          j'insère une première ligne sous la 21 soit à partir de la 22 et je fais le programme : la formule, copier-glisser dans 2 autres cellules et le changement de format
          mais après il faudrait que je passe directement à la ligne 24 pr que dans la formule je prenne les données à partir de la ligne 23 (parce que à chaque fois que je vais insérer, ça va décaler...)
          et que sinon, je remets tjrs la même ligne
          est-ce que tu vois une solution?
          si c'est assez clair
          0
          1. en fait c'est bon, j'ai trouvé une astuce en mettant i = i+1 avant next i
            et ça marche
            mais merci bcp pr ton aide qd même
            0
            1. salut,
              par contre, j'ai un autre problème
              maintenant, je voudrais sélectionner toutes les cellules que j'ai crées et les copier
              voici le programme que j'ai écrit

              For i = 22 To 140
              Range("H" & i & ":J" & i).Select
              Range("H" & i).Activate
              i = i + 1
              Next i
              Selection.Copy
              End Sub

              le problème c'est que ça ne me copie que les trois dernière
              comment maintenir la sélection au fur et à mesure des i
              comme quand on fait à la main avec la touche ctrl?

              merci
              0
              1. j'y ai pensé.

                personnellement j'aurai utilisé un autre contrôle.

                en faisant un test sur la parité de la ligne car que tu insère est toujours
                soit pair soit inpaire
                Sub test3()

                For i = 22 To 130
                If i Mod (2) = 0 Then
                MsgBox ("ligne paire")
                else
                MsgBox ("ligne impaire")
                End If

                Next i

                End Sub
                0