XL 2016 Incrémenter la valeur d'une cellule par rapport à une autre

laurent54000

XLDnaute Nouveau
Bonjour à tous,

J’aurais besoin de votre aide pour le tableau ci-joint. Je vous explique. Ce tableau récupère des variations de températures, 2 possibilités : soit > à 2.5 °C, soit < à 2,5°C.

En colonne A nous avons différents bassins, en B et C les mesures effectués (ces mesures proviennent de données externes qui s’intègrent automatiquement).

Le restes des informations sont renseignées manuellement de D à O.

Prenons par exemple le bassin 1 :

Actuellement, nous avons une série de 11 relevés ont été effectués avec une température inférieure à 2.5 °C (B3). On atteint son record -1 (cellule H3). On peut voir en cellule I3 que ce record – 1 à été atteint voir dépassé 4 fois.

Je recherche depuis un moment à automatiser ce tableau, sans succès.

L’idée serait donc toujours pour notre exemple :

Cas de température < à 2.5°C.

SI B3=D3 alors E3+1, idem pour Si B3=H3 alors I3+1, et pour SI B3=L3 alors M3+1

Cas température < à 2.5°C.

SI C3=F3 alors G3+1, ……….

Sachant que je suis obligé de conserver comme valeur de départ les valeurs présentes actuellement en E, I, M, et G, K, O.

Et cerise sur le gâteau, toujours pour notre exemple du bassin 1, lorsque le record de 12 sera dépassé.

Est-il possible de décaler l’ensemble des données vers la droite ?

Je m’explique. Actuellement 11 mesures si les 2 prochaines sont inférieure à 2.5, alors le record n’est plus de 12, mais passera à 13, ce qui implique que mes records -1 et -2 ne seront plus valables (idem pour le nbr de fois où celui-ci a été égalé ou dépassé).

J’espère être assez précis.

Si vous avez une solution à mon problème se serait vraiment sympas.

Merci d’avoir pris le temps de lire, j’en profite pour vous souhaiter à tous de belles fêtes de fin d’année.
 

Pièces jointes

  • Classeur5.xlsx
    12.7 KB · Affichages: 20

laurent54000

XLDnaute Nouveau
Bonjour,

Essayez ceci. (important, pour ne pas générer d'erreur, il faut remplacer tous les "/" par des "0")

Cdlt
Bonjour Rouge,
merci pour votre aide, vous allez vraiment me simplifier la vie.
cependant, après quelques essais, je me suis aperçu de la choses suivante :
prenons l'exemple sur le bassin 1 avec une température < à 2.5 °C.
relevé 1, nous atteignons le record -2 (la cellule L3 augmente de 1, et la cellule M3 aussi). ok c'est bon.
relevé 2, nous atteignons le record -2 (la cellule H3 augmente de 1, la cellule I3 aussi (ok c'est bon), mais la cellule M3 aussi, alors qu'elle ne devrait pas).
relevé 3, nous atteignons le record (la cellule D3 augmente de 1, la cellule E4 aussi (ok c'est bon), mais les cellules I9 et M9 augmentent aussi de 1 alors qu'elles ne devraient pas).

pour simplifier :
lorsque L3 augmente de 1, alors uniquement M3 doit augmenter de 1
lorsque H3 augmente de 1, alors uniquement I3 doit augmenter de 1
lorsque D3 augmente de 1, alors uniquement E3 doit augmenter de 1

j'espère être plus précis dans ma demande,

je vous remercie l'aide que vous m'avez apportée.

Cordialement





actuellement avec votre macro, on peut voir que les cellules
 

laurent54000

XLDnaute Nouveau
re bonjour,
après avoir parcourue votre macro, j'ai finalement compris comment la modifier pour arriver à ce que je voulais dans le message précédent. je ne voudrais pas abuser, mais est-il possible de faire la chose suivante :

Restons toujours pour des températures < à 2.5°C pour le bassin 1.
lorsque l'on bat le record, le nouveau record s'intègre dans la cellule D3, l'ancien record qui se trouvait en D3, bascule en record-1 (H3) et l'ancien record-1 qui se trouvait en H3, bascule en record-2 (L3).
pouvons-nous faire de même avec les séries, je m'explique. (j'appel série les cellules E3-I3 et M3) pour des températures < à 2.5 et G3-K3 et O3 pour des températures > à 2.5 °C.
imaginons les valeurs suivantes dans les cellules à un instant T :
B3 D3 - E3 H3 - I3 L3 - M3
14 14 - 3 12 - 5 11 - 6

instant T + 1
B3 D3 - E3 H3 - I3 L3 - M3
15 15 - 1 14 - 3 12 - 5

Merci par avance pour votre aide.
 

Rouge

XLDnaute Impliqué
Bonjour,

Si j'ai bien compris, dans le traitement température < 2.5°, remplacez cette partie:
Code:
        If Serie_Max > Rec_Max Then 'Si la série actuelle est supérieur au record actuel alors,
            Cells(i, "D") = Serie_Max 'prend le nouveau record
            Cells(i, "E") = 1 'le comppteur retombe à 1
            Cells(i, "I") = Cells(i, "I") + 1 'le compteur du record-1 s'incrémente
            Cells(i, "M") = Cells(i, "M") + 1 'le compteur du record-2 s'incrémente

par celle-ci:
VB:
        If Serie_Max > Rec_Max Then 'Si la série actuelle est supérieur au record actuel alors,
            Cells(i, "D") = Serie_Max 'prend le nouveau record
            Cells(i, "M") = Cells(i, "I") 'le compteur du record-2 prend la valeur du compteur du record-1
            Cells(i, "I") = Cells(i, "E")  'le compteur du record-1 prend la valeur du compteur du record
            Cells(i, "E") = 1 'le comppteur retombe à 1

********************************************************************************************
dans le traitement température > 2.5°, remplacez cette partie:
Code:
        If Serie_Max > Rec_Max Then 'Si la série actuelle est supérieur au record actuel alors,
            Cells(i, "F") = Serie_Max 'prend le nouveau record
            Cells(i, "G") = 1 'le comppteur retombe à 1
            Cells(i, "K") = Cells(i, "K") + 1 'le compteur du record-1 s'incrémente
            Cells(i, "O") = Cells(i, "O") + 1 'le compteur du record-2 s'incrémente

par celle-ci:
Code:
        If Serie_Max > Rec_Max Then 'Si la série actuelle est supérieur au record actuel alors,
            Cells(i, "F") = Serie_Max 'prend le nouveau record
            Cells(i, "G") = 1 'le comppteur retombe à 1
            Cells(i, "O") = Cells(i, "K")  'le compteur du record-2 prend la valeur du compteur du record-1
            Cells(i, "K") = Cells(i, "G")  'le compteur du record-1 prend la valeur du compteur du record

Cdlt
 

laurent54000

XLDnaute Nouveau
bonjour Rouge, c'est parfait, vous avez réussi à faire ce que je voulais, c'est super.
dernière demande de ma part, après je vous laisse aider d'autres personnes.
supposons que lors d'un relevé de température, nous n'effectuons pas tous les bassins.
prise de température seulement effectuée sur le bassin 1.
Lorsque je vais faire une mise à jour des comptages via la macro, les cellules dans les colonnes E, G, I, K, M et O, risquent d'augmenter de +1, si un record, ou record-1 voir record -2 était relevé lors des mesures effectuées précédemment.
imaginons :
le 28.12.20 relevé de température effectué sur tous les bassins (le bassin 2 a atteint son record en <25°C cellule D4, sa série (cellule E4) augmente de 1)
le 29.12.20 relevé uniquement sur le bassin 1.
lorsque je fais une mise à jour des comptages le 29.12.20 via la macro, la valeur qui est en cellule E4, va augmenter de 1, alors que nous n'avons pas effectué de mesure.
ma question est :
Est-il possible modifier les valeurs présentes dans les colonnes E, G, I, K, M et O, si et seulement si les valeurs dans les colonnes B et C, se trouvant sur la ligne commune on changées depuis la dernière mise à jour des comptages.

j'espère que vous comprenez ce que voudrais avoir comme résultat.

merci par avance, si vous avez une idée de la faisabilité de ma demande.
Très Cordialement.
 
Dernière édition:

Rouge

XLDnaute Impliqué
Bonjour,

Vu que les nouvelles données s'intègrent automatiquement, je vous propose ceci.
On compare les derniers relevés avec une copie des relevés précédents, si il ya une différence entre ces 2 valeurs pour un même bassin, alors on fait la mise à jour sinon on ne touche à rien . Une fois que toutes les valeurs sont passées en revue, on sauvegarde les nouvelles valeurs pour comparer avec les prochains relevés.

Pour cela, avant de charger les nouvelles valeurs des relevés, copiez les plages "B3:C22" dans "R3:S22", ce sera la sauvegarde des précédentes mesures. Ceci n'est à faire que la première fois, par la suite cela se fera automatiquement.

Chargez les nouvelles valeurs et cliquez sur le bouton, seules les valeurs différentes seront prises en compte.

Voici le fichier, veuillez appliquer les modifications que vous avez faites et dont vous parlez dans le post #4

Cdlt
 

Pièces jointes

  • laurent54000_Incrémenter la valeur d'une cellule par rapport à une autre.xlsm
    25.7 KB · Affichages: 5

laurent54000

XLDnaute Nouveau
Bonjour,
encore merci pour votre aide.
ca fonctionne à 99,99%, j'ai beau chercher, mais je ne comprend pas.
j'ai modifier votre macro pour les augmentations des colonnes E, H, M et G, K, O (suivant le post #4.
j'ai aussi modifié dans la ligne Rec Max_2=Cell(i,"N"). j'ai mis N à la place de O.
actuellement lorsque nous atteignons un record+1, les records se déplacent bien vers la droite, mais les valeurs des séries qui se trouvent dans les cellules E, I, G et K ne se déplacent pas.
Vous trouverez dans le fichier :
à l'instant T-1 : bassin 1, le record est de 15, record égalé 10 fois (cellule E3).
à l'instant T : bassin 1 bis, nous avons atteint un record + 1 de 16 (cellule D4), nous avons donc en cellule E4 la valeur 1, car c'est la première fois que nous atteignons ce record.
l'ancien record qui était de 15, passe en record -1 (cellule H4), mais la valeur qui l'accompagne (en l'occurrence 10), ( nombre de fois ou nous avons atteint ce record de 15, qui était présent en cellule E3, n'est pas reporté en cellule I4. la cellule I4 garde la valeur qui était présente à l'instant T-1.
idem pour le record -2 avec la cellule M4 qui indique toujours la valeur 5, alors quelle devrait indiquer la valeur 8.
nous avons la même chose pour les température > 2.5 °C.

j'ai cherché, mais comme je ne connais pas la programmation, je suis dans l'impasse.
en vous remerciant par avance pour votre aide.

Très cordialement
 

Pièces jointes

  • laurent54000_Incrémenter la valeur d'une cellule par rapport à une autre (11).xlsm
    24.4 KB · Affichages: 3

laurent54000

XLDnaute Nouveau
bonjour,
vous avez parfaitement compris. Ca marche parfaitement, je surveillerai l'évolution de ce fichier dans les jours à venir.
je vous remercie beaucoup pour l'aide que vous m'avez apporté.
j'en profite pour vous souhaiter avec un peu d'avance tous mes vœux pour cette nouvelle année qui arrive.

très cordialement
 

Discussions similaires

Réponses
7
Affichages
312

Statistiques des forums

Discussions
312 113
Messages
2 085 426
Membres
102 888
dernier inscrit
medoit