Problème de compteur...

SebyBas

XLDnaute Nouveau
Bonjour à tous,

Je viens vers vous car j’ai un problème de programmation en VBA. Tous d’abord je tien a précisé que je n’y connais rien en VBA, je pars de zéro.

Voilà mon problème ::confused:
Lorsque je rempli la cellule B1 par une valeur, par exemple 2. Je voudrai que la cellule A1 s’incrémente positivement de la valeur renseigné en B1. Bien entendu, à chaque modification de B1, A1 continue de s’incrémenter en rajoutant la nouvelle valeur de B1. Ainsi A1 compte en additionnent chaque valeur de B1.
J’espère que mon explication a été claire. Je demande votre aide pour surmonter ce problème.

Cordialement
Merci
 

Modeste

XLDnaute Barbatruc
Re : Problème de compteur...

Bonjour SebyBas et bienvenue :)

Quand tu dis que tu n'y connais rien, je présume que c'est une façon de parler (un peu caricaturale?)

Essayons donc ce qui suit: peux-tu copier le code suivant et le coller (dans l'éditeur Vba) dans le module de la feuille concernée?
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address <> "$B$1" Then Exit Sub
    [A1] = [A1] + Target
End Sub

Attention: ceci n'est qu'une proposition de base (il n'y a, par exemple, rien qui permette de vérifier que la valeur encodée en B1 soit numérique!) ... mais ça permettra déjà de voir si tu repasses par ici et si tu rencontres déjà un problème :confused:
 

job75

XLDnaute Barbatruc
Re : Problème de compteur...

Bonjour SebyBas, salut Modeste, heureux de te croiser :)

On peut aussi se passer de VBA...

Sur Excel 2010, onglet Fichier => Options-Formules et cocher Activer le calcul itératif.

Nb maximal d'itérations => 1.

Puis entrer en A1 la formule : =SI(CELLULE("address")="$B$1";A1+N(B1);A1)

A+
 

SebyBas

XLDnaute Nouveau
Re : Problème de compteur...

Bonjour Modeste, merci de votre accueil,
En fait, c’est la première fois que j’ai à faire à une programmation en VBA. En temps normale je n’utilise que les calculs Excel. Cependant cette fois ci, je dois utiliser le VBA. Je pence à me mettre sérieusement dans l’apprentissage de cette programmation car ça ma l’aire très intéressent et surtout très pratique^^
Merci pour cette proposition. J’ai réalisé la manipulation que tu m’as décrite, et elle réalise exactement mon attente . Bien entendu ça ne vérifie pas que la valeur encodée en B1 soit bien numérique. Mais ceci n’est qu’un problème mineur pour l’instant.
Après ce pas de géant, j’aimerais pouvoir réaliser le même type d’opération entre la cellule A2 et B2. Cependant je n’y arrive pas.
Voilà ce que je fais, mais cela ne me même à rien …
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$B$1" Then Exit Sub
[A1] = [A1] + Target
If Target.Address <> "$B$2" Then Exit Sub
[A2] = [A2] + Target
End Sub

J’essaie d’avancer petit pas par petit pas. Merci pour votre aide plus que précieuse ^^
 

Modeste

XLDnaute Barbatruc
Re : Problème de compteur...

Bonjour SebyBas,

Si tu es débutant en programmation, une erreur à ne pas commettre est (à mon avis et parmi de nombreuses erreurs possibles ... parmi lesquelles celles que je ferai moi-même) de "saucissonner" la demande ou la solution mise en oeuvre.

Ainsi, dans le cas qui nous occupe, la première proposition que je t'ai faite aurait peut-être déjà été différente, si tu avais évoqué deux cellules à modifier (d'autant que, s'il y en a deux maintenant, il se pourrait bien qu'en définitive, il y en ait 10 ou 50 ...)
Il vaut donc mieux donner, dès le départ, une visibilité d'ensemble sur ton projet.

D'autre part, si tu t'intéresses au vba, consulte déjà l'aide ou ce que tu trouveras sur Internet au sujet des procédures événementielles, de manière à ne pas être dépendant des seules réponses qui te seront fournies ici (ou là). La procédure Worksheet_Change en est un exemple.
 

SebyBas

XLDnaute Nouveau
Re : Problème de compteur...

Re-Bonjour Modeste,
Oui, tu as raison, je ne voulais pas noyer tout le monde dans mon explication, alors j’ai voulu décomposer mon problème en état par étape. Je n’avais pas pensé que cela pourrais poser un problème lors d’une programmation.

Voici mon problème dans son intégralité : :confused:
Par exemple je reçois deux types de pièces différentes, que l’on appellera « Pièce 1 » et « Pièce 2 ». Je renseigne le nombre de « pièces 1 » reçu dans la cellule A1 et le nombre de « pièces 2 » en A2.
Je voudrai que la cellule B1 s’incrémente positivement de la valeur renseigné en A1 et que cellule B2 s’incrémente positivement de la valeur renseigné en A2. Ainsi B1 compte en additionnent chaque valeur de A1 et B2 compte en additionnent chaque valeur de A2.

De plus j’aimerais orienter le compteur incrémentale avec une base de temps, coupé en 3 créneaux par rapport à une horloge :
-Entre 8h00 et 12h00, on incrémente les cellules B1 et B2 par rapport aux cellules A1 et A2
-Entre 12h00 et 20h00, on incrémente les cellules C1 et C2 par rapport aux cellules A1 et A2
-Entre 20h00 et 8h00, on incrémente les cellules D1 et D2 par rapport aux cellules A1 et A2

Voilà, je vous ais décrit exactement ce que j’essaie de faire en programmation VBA. J’espère que j’ai été suffisamment claire pour vous guidez. Je vous remercie de l’aide que vous m’apporté.
Je suis bien évidemment disponible pour toute question que vous trouvez nécessaire de me pauser ^^

De mon côté je fais suivre les conseils de Modeste et me renseigner sur le VBA.
:eek:
 

Modeste

XLDnaute Barbatruc
Re : Problème de compteur...

Re-bonjour,

Une autre proposition, donc, ci-dessous (elle remplace le code précédent). Il y a certainement d'autres manières de s'y prendre et il est (plus que) probable que quelqu'un suggérera plus court ou plus performant ... c'est d'ailleurs tout l'intérêt d'un forum!
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, [A1:A2]) Is Nothing Then
        If Target.Count > 1 Then Exit Sub
        Select Case TimeValue(Now)
            Case TimeValue("08:00:00") To TimeValue("11:59:59")
                col = 2
            Case TimeValue("12:00:00") To TimeValue("19:59:59")
                col = 3
            Case Else
                col = 4
        End Select
        Application.EnableEvents = False
        Cells(Target.Row, col) = Cells(Target.Row, col) + Target
        Application.EnableEvents = True
    End If
End Sub
PS: rappel important (et utile, si tu es débutant) les manipulations réalisées ici, par macro, ne peuvent être annulées de la manière classique (avec la flèche bleue ou Ctrl+Z) ... réfléchis-y bien avant de mettre cette solution en oeuvre!
 

SebyBas

XLDnaute Nouveau
Re : Problème de compteur...

Bonjour Modeste,

Ta proposition fonction parfaitement, et je tant remercie grandement ^^
Voilà la solution adapté à ma demande :

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [B1:B2]) Is Nothing Then
If Target.Count > 1 Then Exit Sub
Select Case TimeValue(Now)
Case TimeValue("05:30:00") To TimeValue("13:29:59")
col = 5
Case TimeValue("13:30:00") To TimeValue("21:29:59")
col = 6
Case Else
col = 7
End Select
Application.EnableEvents = False
Cells(Target.Row, col) = Cells(Target.Row, col) + Target
Application.EnableEvents = True
End If
End Sub

Cependant, mon cahier des charges à évoluée. Je me retrouve une fois de plus dans l’incapacité de réaliser cette tache seul. C’est pour cela que je demande votre aide :confused:
J’aimerais que le compteur ce réinitialise tous les jours à 5 heures 29 minute et 59 seconde, ainsi l’incrémentation de mes valeur en B1 et B2 figurent en colonne 5, 6 et 7 repartirais de zéro tous les matins à 5h29min59sec.
Ce n’est pas tous, j’aimerais garder un historique de 7 jours, en l’occurrence du vendredi 5h29min59sec au vendredi suivant 5h30min00sec. J’aimerais que cet historique ce trouve sur une feuille différente de la feuille du compteur. Ce compteur devra ce réinitialisé lui aussi tous le vendredi à 5h29min59sec.

J’espère que mes explications sont claires ? On vous remercient du temps consacré a ma demande.

Merci :eek:
 

Discussions similaires

Réponses
5
Affichages
209

Membres actuellement en ligne

Statistiques des forums

Discussions
312 196
Messages
2 086 100
Membres
103 116
dernier inscrit
kutobi87