J'ai réalisé deux petits programmes:
Sub Compteur3_Up()
Range("G4").Value = Range("G4").Value + 1
Range("F4").Value = Range("F4").Value - 1
Range("E4").Value = Range("E4").Value - 1
End Sub
Sub RAZ()
Range("G4") = 0
End Sub
me permettant d'incrémenter et de décrémenter des cellules d'une même ligne et d'autre part de remettre à zéro l'une d'entre elles mais je ne sais pas étendre ces deux programmes à toute ma feuille excel: 321 lignes. Je n'ai pas vraiment envie de les retaper 321 fois...Sachant que chaque ligne est indépendante.
Pouvez-vous m'aider svp?
Sub Compteur3_Up()
Dim i As Integer
For i = 4 To 321
Range("G" & i).Value = Range("G" & i).Value + 1
Range("F" & i).Value = Range("F" & i).Value - 1
Range("E" & i).Value = Range("E" & i).Value - 1
Next i
End Sub
Sub Compteur3_Up()
Dim iRow As integer
Dim gRange as string
Dim fRange as string
Dim eRange as string
For iRow = 4 to 321
gRange = "G" & Cstr(iRow)
fRange = "F" & Cstr(iRow)
eRange = "E" & Csts(iRow)
Range(gRange).Value = Range(gRange).Value + 1
Range(fRange).Value = Range(fRange).Value - 1
Range(eRange).Value = Range(eRange).Value -1
next iRow
End Sub
Juste une dernière chose, les lignes sont indépendantes les unes des autres alors qu'avec cette boucle tout est lié...
Je ne sais pas ce qui reste à modifier!
Sous réserve d'avoir compris, les compteurs et la raz uniquement pour la ligne de la cellule active au moment du déclanchement de la macro.
Cordialement
KD
VB:
Sub Compteur_Up()
Dim r&, j%
r = ActiveCell.Row
For j = 5 To 7
Cells(r, j) = Cells(r, j) - 1 - 2 * (j = 7)
Next j
End Sub
Sub Raz()
Dim r&
r = ActiveCell.Row
Cells(r, 7) = 0
End Sub
Bonjour marchesse31, Zdz16, Bonjour KenDev
Pour gérer autant de contrôles sans passer par un module de classe, il faut récupérer le numéro de la ligne où se trouve le contrôle appelant.
Je propose
VB:
Sub test_Compteur3_Up()
Dim I&
I = ActiveSheet.Shapes(Application.Caller).TopLeftCell.Row
Range("G" & I).Value = Range("G" & I).Value + 1
Range("F" & I).Value = Range("F" & I).Value - 1
Range("E" & I).Value = Range("E" & I).Value - 1
End Sub
Et
VB:
Sub Test_RAZ()
Dim I&
I = ActiveSheet.Shapes(Application.Caller).TopLeftCell.Row
Range("G" & I) = 0
End Sub
Ces codes récupèrent l'emplacement des toupies et modifient les cellules de la même ligne.
Tu sera obligé de lier chaque élément à son code correspondant.
Pour le second problème soit tu lie tes toupies une à une aux cellules correspondentes soit tu lie une à une les toupies à une macro générale (à toi de voir)
Merci à tous pour vos réponses, ça m'a beaucoup aidé!!! Dernière petite chose, avez-vous une idée concernant mon problème de toupies que j'ai évoqué hier dans mon fichier joint Stock_dépôt?
Merci d'avance.
A tout hasard, il ne serai pas judicieux de créer une userform dans laquelle tu peu sélectionner ton article, afficher la situation de l'article et saisir tes valeurs voulues (voir même ajouter le contrôl spin, si tu veux) et mettre à jour la feuille.
Je pense que c'est plus simple et tu aura la possibilte d'ajouter tes conditions et vérifications.
Bon, c'est une idée comme une autre.
Question pour Efgé, y-a-t-il un moyen de modifier dynamiquement les propriétés du contrôl Spin (Toupie) via Vba ?
je pense qu'il faut creuser de ce coté.
...Question pour Efgé, y-a-t-il un moyen de modifier dynamiquement les propriétés du contrôl Spin (Toupie) via Vba ?
je pense qu'il faut creuser de ce coté.
Il y a moyen de tout modifier, si et seulement si, on utilise les bons contrôles.
Ici il s'agit de toupies Formulaires. Leurs possibilités sont très réduites et leurs manipulations sujettes à problèmes contrairement aux contrôles ActiveX, qui eux possèdent des évennement interceptables (Change en particulier).
A mon avis, que je partage avec moi-même dès que je me réuni, un fichier avec autant d'objets devrait être géré par Module de Classe.
Mais comme ce genre de gestion peut s'avérer complexe pour des non habitués du codage, j'ai proposé une solution simple, certainement pas la meilleure mais façilement applicable.