Formule visual basic

Résolu
lili28 -  
Nabla's Messages postés 18201 Date d'inscription   Statut Contributeur Dernière intervention   -
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. Nabla's Messages postés 18201 Date d'inscription   Statut Contributeur Dernière intervention   3 228
     
    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
  2. Bidouilleu_R Messages postés 1209 Statut Membre 296
     
    "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. amine69500 Messages postés 471 Statut Membre 12
       
      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
      1. Nabla's Messages postés 18201 Date d'inscription   Statut Contributeur Dernière intervention   3 228 > amine69500 Messages postés 471 Statut Membre
         
        merci d'ouvrir ton propre post, ainsi ca facilitera le traitement des problèmes ...
        Bonne journée
        0
  3. lili28
     
    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
  4. Bidouilleu_R Messages postés 1209 Statut Membre 296
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. lili28
     
    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
  7. lili28
     
    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
  8. lili28
     
    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
  9. Bidouilleu_R Messages postés 1209 Statut Membre 296
     
    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