Boucle de Calcul sous VBA
Djawelle
Messages postés
6
Statut
Membre
-
marie -
marie -
Bonjour,
J'ai quelques soucis sous VBA car je débute complétement et j'aurai besoin de votre aide. Je souhaite réaliser une macro qui remplira totalement une grille (B39:L65).
J'ai effectué 2 fois de suite l'enregistrement de la macro, le tout étant de créer une seule macro avec une boucle à l'intérieure qui change mes copie/colle/valeur finale.
Je joins ci-dessous 2 boucles que j'ai créé avec les commentaires des cellules.
Un immense merci pour votre aide!
Djawelle
Sub calcul_CGRP_1()
'
' calcul_CGRP_1 Macro
' Macro enregistrée le 17/08/2006 par gaelle.monnier
'
'
Range("A39").Select
'Il faut que ça fonctionne de A39 jusqu'à A65
Selection.Copy
Range("B13").Select
'Toujours coller dans cette case
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("B38").Select
'Il faut que ça fonctionne de B38 jusqu'à L38
Application.CutCopyMode = False
Selection.Copy
Range("B10").Select
'Toujours coller dans cette case
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("B22").Select
'Toujours coller dans cette case
Application.CutCopyMode = False
Selection.Copy
Range("B39").Select
'Retour de la valeur finale dans la grille B39:L65
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'Version 2, la suite!!!
Range("A40").Select
Selection.Copy
Range("B13").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("C38").Select
Application.CutCopyMode = False
Selection.Copy
Range("B10").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("B22").Select
Application.CutCopyMode = False
Selection.Copy
Range("B40").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End Sub
J'ai quelques soucis sous VBA car je débute complétement et j'aurai besoin de votre aide. Je souhaite réaliser une macro qui remplira totalement une grille (B39:L65).
J'ai effectué 2 fois de suite l'enregistrement de la macro, le tout étant de créer une seule macro avec une boucle à l'intérieure qui change mes copie/colle/valeur finale.
Je joins ci-dessous 2 boucles que j'ai créé avec les commentaires des cellules.
Un immense merci pour votre aide!
Djawelle
Sub calcul_CGRP_1()
'
' calcul_CGRP_1 Macro
' Macro enregistrée le 17/08/2006 par gaelle.monnier
'
'
Range("A39").Select
'Il faut que ça fonctionne de A39 jusqu'à A65
Selection.Copy
Range("B13").Select
'Toujours coller dans cette case
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("B38").Select
'Il faut que ça fonctionne de B38 jusqu'à L38
Application.CutCopyMode = False
Selection.Copy
Range("B10").Select
'Toujours coller dans cette case
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("B22").Select
'Toujours coller dans cette case
Application.CutCopyMode = False
Selection.Copy
Range("B39").Select
'Retour de la valeur finale dans la grille B39:L65
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'Version 2, la suite!!!
Range("A40").Select
Selection.Copy
Range("B13").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("C38").Select
Application.CutCopyMode = False
Selection.Copy
Range("B10").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("B22").Select
Application.CutCopyMode = False
Selection.Copy
Range("B40").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End Sub
A voir également:
- Boucle de Calcul sous VBA
- Calcul moyenne excel - Guide
- Calcul km marche à pied gratuit - Télécharger - Sport
- Calcul charpente bois gratuit - Télécharger - Architecture & Déco
- Logiciel gratuit calcul valeur nutritionnelle - Télécharger - Santé & Bien-être
- Logiciel gratuit calcul surface m2 - Télécharger - Outils professionnels
5 réponses
Salut,
je ne comprends pas vraiment ce que tu veux faire et à mon avis un petit bout de code peut remplacer tout ça de manière bien plus simple.
peux tu expliquer ce que tu veux faire que je puisse te griffoner un bout de code.
je ne comprends pas vraiment ce que tu veux faire et à mon avis un petit bout de code peut remplacer tout ça de manière bien plus simple.
peux tu expliquer ce que tu veux faire que je puisse te griffoner un bout de code.
En fait ma grille se remplit avec des valeurs de la colonne val_col_A qui croise les val_row_B. Exemple: en colonne coût d'un produit, et en ligne nombre de produit. On peut donc croiser tout les prix, avec tout les nombres de produits. Et cette valeur de "croisement", est une formule Sommeprod() mais qui met en jeu les 2 données précédentes, d'où le copier/coller. Dommage, j'e n'ai pas moyen de te joindre l'onglet, ça aurait pu être plus simple.
Merci!
Merci!
re,
c'est dommage j'avais gribouillé un bout de code mais je l'ai oublié ou boulot.
cela dit je reste persuadé qu'il n'y a pas besoin de copier coller.
lol
je t'envoie ma proposition dans une 15 aine de min faut que je la réécrive...
a tt
c'est dommage j'avais gribouillé un bout de code mais je l'ai oublié ou boulot.
cela dit je reste persuadé qu'il n'y a pas besoin de copier coller.
lol
je t'envoie ma proposition dans une 15 aine de min faut que je la réécrive...
a tt
essaye ça.
ya pas de copier coller mais je pense aue sa répond à tes attentes...
oui je sais je suis têtu...
ya pas de copier coller mais je pense aue sa répond à tes attentes...
oui je sais je suis têtu...
Sub macro() i = 39 While i < 66 val_col = Cells(i, "A") j = 2 While j < 13 val_row = Cells(38, j) Cells(13, "B") = val_col Cells(10, "B") = val_row result = Cells(22, "B") Cells(i, j) = result j = j + 1 Wend i = i + 1 Wend End Sub
en fait fait plutôt comme ça:
je l'ai tester je te le certifie en état de marche.
Sub macro()
i = 39
While i < 66
val_col = Cells(i, "A")
j = 2
While j < 13
val_row = Cells(38, j)
'ici tu pourrais faire directement l'opération dans la macro
'et mettre le résultat dans le "tableau" et tout autre cellule
'ca t'éviterai que ta formule puisse être modifié et tu
'pourrais faire tes cumules en même temps enfin après
'c'est toi qui vois
Range("B13") = val_col
Range("B10") = val_row
result = Range("B22")
Cells(i, j) = result
j = j + 1
Wend
i = i + 1
Wend
End Sub
je l'ai tester je te le certifie en état de marche.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
bonjour
Function AA(Vl As Variant, sigma As Double, mu As Double, datevalo As Date, datecheance As Date) As Variant
Dim pas As Single
Dim delta As Variant
Dim normu As Variant
Dim norsigma As Variant
Dim normsimule As Variant
Dim j As Integer
pas = 7 / 365
delta = (datecheance - datevalo) / 7
normu = (mu - 0.5 * sigma ^ 2) * pas
norsigma = sigma * Sqr(pas)
For j = 1 To delta
Randomize
normsimule = Application.NormSInv(Rand)
Vl = Vl * Exp(normu + normsimule * norsigma)
Next j
AA = Vl
End Function
quelqu'un peut m'aider pour savoir pk ça marche pas??
Function AA(Vl As Variant, sigma As Double, mu As Double, datevalo As Date, datecheance As Date) As Variant
Dim pas As Single
Dim delta As Variant
Dim normu As Variant
Dim norsigma As Variant
Dim normsimule As Variant
Dim j As Integer
pas = 7 / 365
delta = (datecheance - datevalo) / 7
normu = (mu - 0.5 * sigma ^ 2) * pas
norsigma = sigma * Sqr(pas)
For j = 1 To delta
Randomize
normsimule = Application.NormSInv(Rand)
Vl = Vl * Exp(normu + normsimule * norsigma)
Next j
AA = Vl
End Function
quelqu'un peut m'aider pour savoir pk ça marche pas??
Alors j'ai une grille fixe avec des données dans une colonne (A39 à A65, nommons la A) et sur une ligne (B38 à L38, nommons la B). Je souhaite remplir "l'intérieur" de cette grille de la manière suivante:
Copier une cellule de la colonne A et la coller valeur au dessus en B13 (j'ai une suite de calcul) + Copier une cellule de la ligne B et la coller valeur au dessus en B10 (suite de calcul).
Là un résultat est calculé en B22. Je copie ce résultat et le colle/valeur dans la grille B39:L65
Je ne sais pas si mes explications sont plus claires... J'espère!
Merci en tout cas!
tu prends une valeur de ta colonne A on va appeler cette valeur val_col_A
tu prends une valeur de ta ligne B on va appeler cette valeur val_row_B
tu fais une operation qui inclu val_col_A et val_row_B pour te donner un résultat : result
et tu veux ranger dans la case correspondant à l'intersection de la ligne à laquelle appartient val_col_A et la colonne à laquelle appartient val_row_B la valeur de result
c'est ça?
si oui donnes moi l'opération à effectuer car t'as pas besoin de faire tous tes copier coller....
Le coup des copier coller est vraiment trop galère à mettre en Macro?
Merci,
si oui ya tjs pas besoin de copier coller