Je sors tout juste de formation sur VB et je butte sur la macro suivante que
j'essaie de créer
Range("i2").Select
ActiveCell.Value = i
While i = c
ActiveCell.Offset(0, 1) = x
x = x * (-1)
ActiveCell.Offset(1, (-1)).Select
ActiveCell.Value = i
Wend
J'ai dans ma colonne I soit "C" soit "D" avec tri sur cette colonne. Je
cherche à multiplier par -1 la colonne J tant que la colonne I="C".
Exemple
I2=C alors J2=J2*-1 puis je passe sur I3 et tant que la cellule I
selectionnée =C alors l'opération se répète.
Mais je ne parviens pas jusqu'au bout malgré moulte tentatives..
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Modeste
Bonsour® Yapi avec ferveur ;o))) vous nous disiez :
Je sors tout juste de formation sur VB et je butte sur la macro suivante que j'essaie de créer
Range("i2").Select ActiveCell.Value = i While i = c ActiveCell.Offset(0, 1) = x x = x * (-1) ActiveCell.Offset(1, (-1)).Select ActiveCell.Value = i Wend
J'ai dans ma colonne I soit "C" soit "D" avec tri sur cette colonne. Je cherche à multiplier par -1 la colonne J tant que la colonne I="C".
La formation me semble insuffisante sur le B.A. BA de VBA !!!! 1 - l'affectation de valeur s'exprime de la gauche vers la droite Affectation = valeur à affecter 2 - prendre l'habitude de déclarer les variables 3 - les constantes doivent etre déclarées selon leur type si c= "C", alors c est de type string
Sub Yapi() Const c As String = "C" Dim i Range("i2").Select '----tant qu'il y a une valeur dans la colonne( I ) While Not IsEmpty(ActiveCell) ' ----si cette valeur est "c" ou "C" i = UCase(ActiveCell) If i = c Then '---- alors on multiplie la valeur en colonne( J ) par -1 ActiveCell.Offset(0, 1) = -1 * ActiveCell.Offset(0, 1) End If '---- on selectionne la cellule suivante en colonne( I ) ActiveCell.Offset(1, 0).Select Wend End Sub
-- -- @+ ;o)))
Bonsour® Yapi avec ferveur ;o))) vous nous disiez :
Je sors tout juste de formation sur VB et je butte sur la macro suivante que
j'essaie de créer
Range("i2").Select
ActiveCell.Value = i
While i = c
ActiveCell.Offset(0, 1) = x
x = x * (-1)
ActiveCell.Offset(1, (-1)).Select
ActiveCell.Value = i
Wend
J'ai dans ma colonne I soit "C" soit "D" avec tri sur cette colonne. Je
cherche à multiplier par -1 la colonne J tant que la colonne I="C".
La formation me semble insuffisante sur le B.A. BA de VBA !!!!
1 - l'affectation de valeur s'exprime de la gauche vers la droite
Affectation = valeur à affecter
2 - prendre l'habitude de déclarer les variables
3 - les constantes doivent etre déclarées selon leur type
si c= "C", alors c est de type string
Sub Yapi()
Const c As String = "C"
Dim i
Range("i2").Select
'----tant qu'il y a une valeur dans la colonne( I )
While Not IsEmpty(ActiveCell)
' ----si cette valeur est "c" ou "C"
i = UCase(ActiveCell)
If i = c Then
'---- alors on multiplie la valeur en colonne( J ) par -1
ActiveCell.Offset(0, 1) = -1 * ActiveCell.Offset(0, 1)
End If
'---- on selectionne la cellule suivante en colonne( I )
ActiveCell.Offset(1, 0).Select
Wend
End Sub
Bonsour® Yapi avec ferveur ;o))) vous nous disiez :
Je sors tout juste de formation sur VB et je butte sur la macro suivante que j'essaie de créer
Range("i2").Select ActiveCell.Value = i While i = c ActiveCell.Offset(0, 1) = x x = x * (-1) ActiveCell.Offset(1, (-1)).Select ActiveCell.Value = i Wend
J'ai dans ma colonne I soit "C" soit "D" avec tri sur cette colonne. Je cherche à multiplier par -1 la colonne J tant que la colonne I="C".
La formation me semble insuffisante sur le B.A. BA de VBA !!!! 1 - l'affectation de valeur s'exprime de la gauche vers la droite Affectation = valeur à affecter 2 - prendre l'habitude de déclarer les variables 3 - les constantes doivent etre déclarées selon leur type si c= "C", alors c est de type string
Sub Yapi() Const c As String = "C" Dim i Range("i2").Select '----tant qu'il y a une valeur dans la colonne( I ) While Not IsEmpty(ActiveCell) ' ----si cette valeur est "c" ou "C" i = UCase(ActiveCell) If i = c Then '---- alors on multiplie la valeur en colonne( J ) par -1 ActiveCell.Offset(0, 1) = -1 * ActiveCell.Offset(0, 1) End If '---- on selectionne la cellule suivante en colonne( I ) ActiveCell.Offset(1, 0).Select Wend End Sub
-- -- @+ ;o)))
Yapi
Pire que la formation sont les formés... Ok pour la leçon, je vais la digérer et essayer de l'assimiler.
Merci pour l'info détaillée!
Yapi
Bonsour® Yapi avec ferveur ;o))) vous nous disiez :
Je sors tout juste de formation sur VB et je butte sur la macro suivante que j'essaie de créer
Range("i2").Select ActiveCell.Value = i While i = c ActiveCell.Offset(0, 1) = x x = x * (-1) ActiveCell.Offset(1, (-1)).Select ActiveCell.Value = i Wend
J'ai dans ma colonne I soit "C" soit "D" avec tri sur cette colonne. Je cherche à multiplier par -1 la colonne J tant que la colonne I="C".
La formation me semble insuffisante sur le B.A. BA de VBA !!!! 1 - l'affectation de valeur s'exprime de la gauche vers la droite Affectation = valeur à affecter 2 - prendre l'habitude de déclarer les variables 3 - les constantes doivent etre déclarées selon leur type si c= "C", alors c est de type string
Sub Yapi() Const c As String = "C" Dim i Range("i2").Select '----tant qu'il y a une valeur dans la colonne( I ) While Not IsEmpty(ActiveCell) ' ----si cette valeur est "c" ou "C" i = UCase(ActiveCell) If i = c Then '---- alors on multiplie la valeur en colonne( J ) par -1 ActiveCell.Offset(0, 1) = -1 * ActiveCell.Offset(0, 1) End If '---- on selectionne la cellule suivante en colonne( I ) ActiveCell.Offset(1, 0).Select Wend End Sub
-- -- @+ ;o)))
Pire que la formation sont les formés... Ok pour la leçon, je vais la digérer
et essayer de l'assimiler.
Merci pour l'info détaillée!
Yapi
Bonsour® Yapi avec ferveur ;o))) vous nous disiez :
Je sors tout juste de formation sur VB et je butte sur la macro suivante que
j'essaie de créer
Range("i2").Select
ActiveCell.Value = i
While i = c
ActiveCell.Offset(0, 1) = x
x = x * (-1)
ActiveCell.Offset(1, (-1)).Select
ActiveCell.Value = i
Wend
J'ai dans ma colonne I soit "C" soit "D" avec tri sur cette colonne. Je
cherche à multiplier par -1 la colonne J tant que la colonne I="C".
La formation me semble insuffisante sur le B.A. BA de VBA !!!!
1 - l'affectation de valeur s'exprime de la gauche vers la droite
Affectation = valeur à affecter
2 - prendre l'habitude de déclarer les variables
3 - les constantes doivent etre déclarées selon leur type
si c= "C", alors c est de type string
Sub Yapi()
Const c As String = "C"
Dim i
Range("i2").Select
'----tant qu'il y a une valeur dans la colonne( I )
While Not IsEmpty(ActiveCell)
' ----si cette valeur est "c" ou "C"
i = UCase(ActiveCell)
If i = c Then
'---- alors on multiplie la valeur en colonne( J ) par -1
ActiveCell.Offset(0, 1) = -1 * ActiveCell.Offset(0, 1)
End If
'---- on selectionne la cellule suivante en colonne( I )
ActiveCell.Offset(1, 0).Select
Wend
End Sub
Pire que la formation sont les formés... Ok pour la leçon, je vais la digérer et essayer de l'assimiler.
Merci pour l'info détaillée!
Yapi
Bonsour® Yapi avec ferveur ;o))) vous nous disiez :
Je sors tout juste de formation sur VB et je butte sur la macro suivante que j'essaie de créer
Range("i2").Select ActiveCell.Value = i While i = c ActiveCell.Offset(0, 1) = x x = x * (-1) ActiveCell.Offset(1, (-1)).Select ActiveCell.Value = i Wend
J'ai dans ma colonne I soit "C" soit "D" avec tri sur cette colonne. Je cherche à multiplier par -1 la colonne J tant que la colonne I="C".
La formation me semble insuffisante sur le B.A. BA de VBA !!!! 1 - l'affectation de valeur s'exprime de la gauche vers la droite Affectation = valeur à affecter 2 - prendre l'habitude de déclarer les variables 3 - les constantes doivent etre déclarées selon leur type si c= "C", alors c est de type string
Sub Yapi() Const c As String = "C" Dim i Range("i2").Select '----tant qu'il y a une valeur dans la colonne( I ) While Not IsEmpty(ActiveCell) ' ----si cette valeur est "c" ou "C" i = UCase(ActiveCell) If i = c Then '---- alors on multiplie la valeur en colonne( J ) par -1 ActiveCell.Offset(0, 1) = -1 * ActiveCell.Offset(0, 1) End If '---- on selectionne la cellule suivante en colonne( I ) ActiveCell.Offset(1, 0).Select Wend End Sub
-- -- @+ ;o)))
lSteph
Bonjour, en complément de ce qui visait essentiellement la syntaxe, un petit point pratique le .select à cet effet n'a pas forcément d'utilité, il en a fort rarement d'ailleurs , il est presque toujours inutile et encombre la fluidité du code. (Il est justifié lorsqu'on veut absolument que telle cellule ou plage soit sélectionnée à l'entrée ou à la sortie de la macro mais il est inutile pour effectuer une action qui plus est en boucle sur les cellules.
ainsi, '... [i2].select ActiveCell.value=i peut se résumer à [i2].value=i
de même dans l'idée de ce que tu faisais:
Sub zaza() Dim c As Range For Each c In Range("j2", [j65536].End(xlUp).Address) If Not IsEmpty(c) And UCase(c.Offset(0, -1)) = "C" Then c = c * -1 End If Next End Sub
'Cordialement
'LSteph
On 15 juin, 11:58, Yapi wrote:
Bonjour,
Je sors tout juste de formation sur VB et je butte sur la macro suivante que j'essaie de créer
Range("i2").Select ActiveCell.Value = i While i = c ActiveCell.Offset(0, 1) = x x = x * (-1) ActiveCell.Offset(1, (-1)).Select ActiveCell.Value = i Wend
J'ai dans ma colonne I soit "C" soit "D" avec tri sur cette colonne. Je cherche à multiplier par -1 la colonne J tant que la colonne I="C".
Exemple I2=C alors J2=J2*-1 puis je passe sur I3 et tant que la cellule I selectionnée =C alors l'opération se répète.
Mais je ne parviens pas jusqu'au bout malgré moulte tentatives..
Merci pour votre aide
+
Bonjour,
en complément de ce qui visait essentiellement la syntaxe, un petit
point pratique
le .select
à cet effet n'a pas forcément d'utilité, il en a fort rarement
d'ailleurs , il est presque toujours inutile et encombre la fluidité
du code.
(Il est justifié lorsqu'on veut absolument que telle cellule ou plage
soit sélectionnée à l'entrée ou à la sortie de la macro
mais il est inutile pour effectuer une action qui plus est en boucle
sur les cellules.
ainsi,
'...
[i2].select
ActiveCell.value=i
peut se résumer à
[i2].value=i
de même dans l'idée de ce que tu faisais:
Sub zaza()
Dim c As Range
For Each c In Range("j2", [j65536].End(xlUp).Address)
If Not IsEmpty(c) And UCase(c.Offset(0, -1)) = "C" Then
c = c * -1
End If
Next
End Sub
'Cordialement
'LSteph
On 15 juin, 11:58, Yapi <Y...@discussions.microsoft.com> wrote:
Bonjour,
Je sors tout juste de formation sur VB et je butte sur la macro suivante que
j'essaie de créer
Range("i2").Select
ActiveCell.Value = i
While i = c
ActiveCell.Offset(0, 1) = x
x = x * (-1)
ActiveCell.Offset(1, (-1)).Select
ActiveCell.Value = i
Wend
J'ai dans ma colonne I soit "C" soit "D" avec tri sur cette colonne. Je
cherche à multiplier par -1 la colonne J tant que la colonne I="C".
Exemple
I2=C alors J2=J2*-1 puis je passe sur I3 et tant que la cellule I
selectionnée =C alors l'opération se répète.
Mais je ne parviens pas jusqu'au bout malgré moulte tentatives..
Bonjour, en complément de ce qui visait essentiellement la syntaxe, un petit point pratique le .select à cet effet n'a pas forcément d'utilité, il en a fort rarement d'ailleurs , il est presque toujours inutile et encombre la fluidité du code. (Il est justifié lorsqu'on veut absolument que telle cellule ou plage soit sélectionnée à l'entrée ou à la sortie de la macro mais il est inutile pour effectuer une action qui plus est en boucle sur les cellules.
ainsi, '... [i2].select ActiveCell.value=i peut se résumer à [i2].value=i
de même dans l'idée de ce que tu faisais:
Sub zaza() Dim c As Range For Each c In Range("j2", [j65536].End(xlUp).Address) If Not IsEmpty(c) And UCase(c.Offset(0, -1)) = "C" Then c = c * -1 End If Next End Sub
'Cordialement
'LSteph
On 15 juin, 11:58, Yapi wrote:
Bonjour,
Je sors tout juste de formation sur VB et je butte sur la macro suivante que j'essaie de créer
Range("i2").Select ActiveCell.Value = i While i = c ActiveCell.Offset(0, 1) = x x = x * (-1) ActiveCell.Offset(1, (-1)).Select ActiveCell.Value = i Wend
J'ai dans ma colonne I soit "C" soit "D" avec tri sur cette colonne. Je cherche à multiplier par -1 la colonne J tant que la colonne I="C".
Exemple I2=C alors J2=J2*-1 puis je passe sur I3 et tant que la cellule I selectionnée =C alors l'opération se répète.
Mais je ne parviens pas jusqu'au bout malgré moulte tentatives..