Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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
 

Efgé

XLDnaute Barbatruc
Re : Boucle VBA Excel 2007

Re
Bonjour Zdz16
@ marchesse31

Mets un petit fichier exemple annonyme, avec quelques explications et on verras ça dès demain, à moins qu'une bonne âme ne passe avant
Cordialement
 

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:

marchesse31

XLDnaute Nouveau
Re : Boucle VBA Excel 2007

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.
 

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
941
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…