Boucle VBA Excel 2007

marchesse31

XLDnaute Nouveau
Bonjour à tous,

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?

Merci d'avance.
 

Efgé

XLDnaute Barbatruc
Re : Boucle VBA Excel 2007

Bonjour marchesse31

Un exemple de boucle:
VB:
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

Cordialement
 

Zdz16

XLDnaute Occasionnel
Re : Boucle VBA Excel 2007

Bonjour;

Peut-etre comme ceci
Code:
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
 

KenDev

XLDnaute Impliqué
Re : Boucle VBA Excel 2007

Bonjour à tous,

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
 

Zdz16

XLDnaute Occasionnel
Re : Boucle VBA Excel 2007

Bonjour;

Voici un exemple contenant la procédure.

Pour ton fichier, je n'ai pas compris à ce que tu veux faire. Peut-tu décrire le fonctionnement et l'utilisation que tu veux.

Cordialement
 

Pièces jointes

  • zdz16_Exemple.xlsm
    19.4 KB · Affichages: 33
Dernière édition:

Efgé

XLDnaute Barbatruc
Re : Boucle VBA Excel 2007

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)

Cordialement
 
Dernière édition:

Zdz16

XLDnaute Occasionnel
Re : Boucle VBA Excel 2007

Bonjour à tous;

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é.

Cordialement
 

Efgé

XLDnaute Barbatruc
Re : Boucle VBA Excel 2007

Re

...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.

Cordialement
 

Discussions similaires

Réponses
14
Affichages
908

Statistiques des forums

Discussions
312 247
Messages
2 086 590
Membres
103 247
dernier inscrit
bottxok