Formule visual basic

Résolu/Fermé
lili28 - 23 juin 2009 à 17:18
Nabla's Messages postés 18203 Date d'inscription mercredi 4 juin 2008 Statut Contributeur Dernière intervention 28 avril 2014 - 24 juin 2009 à 13:56
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
A voir également:

8 réponses

Nabla's Messages postés 18203 Date d'inscription mercredi 4 juin 2008 Statut Contributeur Dernière intervention 28 avril 2014 3 192
23 juin 2009 à 17:26
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
Bidouilleu_R Messages postés 1181 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 12 juillet 2012 289
23 juin 2009 à 17:31
"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
amine69500 Messages postés 418 Date d'inscription lundi 8 juin 2009 Statut Membre Dernière intervention 25 août 2013 12
24 juin 2009 à 13:05
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
Nabla's Messages postés 18203 Date d'inscription mercredi 4 juin 2008 Statut Contributeur Dernière intervention 28 avril 2014 3 192 > amine69500 Messages postés 418 Date d'inscription lundi 8 juin 2009 Statut Membre Dernière intervention 25 août 2013
24 juin 2009 à 13:56
merci d'ouvrir ton propre post, ainsi ca facilitera le traitement des problèmes ...
Bonne journée
0
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
Bidouilleu_R Messages postés 1181 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 12 juillet 2012 289
24 juin 2009 à 11:00
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
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
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
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
Bidouilleu_R Messages postés 1181 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 12 juillet 2012 289
24 juin 2009 à 12:42
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