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. 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
    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
      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
        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
          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+
            1. 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
              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+
                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
                2. Contributeur
                  @amine69500merci d'ouvrir ton propre post, ainsi ca facilitera le traitement des problèmes ...
                  Bonne journée
              2. 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)