pb affichage des valeurs temporaires d'une cellule

diem

XLDnaute Nouveau
Bonjour a tous, après avoir longuement passé le forum en revue je ne trouve toujours pas la solution a mon problème.
J'aimerais pourvoir affecter la valeur temporelle d'une celllule dans une sorte de tableau a une colonne tout en gardant chaques valeurs de cette cellule . Par exemple:

Je rentre A1=8 et j'aimerai afficher C1=8, ensuite je change la valeur de A1(A1=4) j'aimerai afficher C1=8 et C2=4 ainsi de suite.... le nombre de changement de valeur de la cellule A1 est aléatoire, j'aimerai donc avoir une formule me permettant de créer un tableau a N ligne et 1 colonne regroupant les différentes valeurs de A1.

Pour plus de clareté un exemple :
A B C
8 8 première valeur

A B C
4 8 première valeur
4 deuxième valeur

A B C
6 8 première valeur
4 deuxième valeur
6 troisième valeur

ainsi de suite......


J'espère avoir été assez clair. Merci d'avance pour votre aide
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : pb affichage des valeurs temporaires d'une cellule

Bonjour et Bienvenu Diem, bonjour le forum,

En pièce jointe un fichier avec la macro événementielle Change suivante (dans l'onglet Feuil1):
Code:
Private Sub Worksheet_Change(ByVal Target As Range) 'au changement dans l'onglet
If Target.Address <> "$A$1" Then Exit Sub 'si le changement a lieu ailleurs qu'en A1, sort de la procédure
If Range("C1").Value = "" Then 'condition : si C1 est vide
    Range("C1").Value = Range("A1").Value 'ci prend la valeur de A1
Else 'sinon
    Range("C65536").End(xlUp).Offset(1, 0).Value = Range("A1").Value 'la première cellule vide en C prend la valeur de A1
End If 'fin de la condition
End Sub
 

Pièces jointes

  • Diem_v01.xls
    21.5 KB · Affichages: 54

diem

XLDnaute Nouveau
Re : pb affichage des valeurs temporaires d'une cellule

Ce code pour visual basic fonctionne très bien si on change manuellement la valeur de la case en A1 cependant lorsque la valeur de A1 est une formule (ex: A1=A2*3) elle ne fonctionne plus....

De plus j'amerai pouvoir effectuer cette opération avec plusieurs cellules appartenant a une meme feuille... Par exemple incrémenter les valeurs de A en C et incrémenter les valeurs de D en E . J'ai essayer de réécrire une autre Sub a la suite de celle que vous m'avez envoyé mais cela ne fonctionne pas même en changeant le nom de la Sub...

Avez-vous une solution pour résoudre ce problème???
 
Dernière édition:

Robert

XLDnaute Barbatruc
Repose en paix
Re : pb affichage des valeurs temporaires d'une cellule

Bon jour Diem, bonjour le forum,

Envoie-moi ton fichier en indiquant précisément tes besoins. Place les formules etc... Car le problème avec les macro cé st qu'il faut adapter le code en cas de changement (pas avec les formules...).
 

diem

XLDnaute Nouveau
Re : pb affichage des valeurs temporaires d'une cellule

Bonjour a tous et merci robert pour l'aide que tu m'apportes .... j'ai conscience du boulot énorme que représente l'ecriture sous VBA de toutes les modifications que j'ai a effectuer. En effet j'aimerais faire renvoyer automatiquement 28 valeurs, c'est pourquoi je t'ai demandé les étapes me permettant d'arriver au résultat voulu...
les valeurs a renvoyer et a incrémenter sont :
B9 dans A52
B14 dans B52
C14 dans C52
D14 dans D52
E14 dans E52
G9 dans G52
H9 dans H52
I9 dans I52
J9 dans J52
B21dans L52
B24dans M52
B26 dans N52
C26 dans O52
D26 dans P52
E26 ans Q52
H26 dans T52
I26 dans U52
J26 dans V52
K26 dans W52
B34 dans Y52
B39 dans Z52
C39 dans AA52
D39 dans AB52
E39 dans AC52
H39 dans AE52
I39 dans AF52
J39 dans AG52
K39 dans AH52

le fichier joint permet d'incrémenter directement A9 en A52 grace a la formule que tu m'as donné .Si tu pouvais me montrer la façon de faire pour les 5 premières valeurs comme ça je pourrais finir le travail sans t'embêter.
Merci d'avance

DIEM
 

Pièces jointes

  • CHUTE DE TENSION DC V2.xlsm
    32.1 KB · Affichages: 50

Robert

XLDnaute Barbatruc
Repose en paix
Re : pb affichage des valeurs temporaires d'une cellule

Bonjour Diem, bonjour le forum,

J'ai bien reçu tes email Diem mais je n'ai pas eu le temps de finir car ton problème est plus complexe qu'il n'y paraît.

L'événement Change réagit à l'édition d'une cellule et a comme argumet une cellule ou une plage (Range). Mais dans ton cas certaines cellules contiennent des formules. On pourait utiliser l'événement Calculate mais là on n'a plus d'argument Range... Donc j'ai pensé rechercher la cellule qui faisait changer la formule et dans certains cas elle se trouve sur un autre onglet. Or l'événement Change n'est propre qu'à un seul onglet.

Il me faut donc regarder ça de très près avec plus de temps. Je ne peux malheureusement pas non plus te donner la marche à suivre n'ayant pas moi-même trouver la solution. J'espère trouver le temps ce week-end pour me pencher sur ton problème et peut-être le résoudre...
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : pb affichage des valeurs temporaires d'une cellule

Bonsoir Diem, bonsoir le forum,

En pièce jointe ton fichier modifié. Tu verras dans le code j'émets certains doutes et tu devras assurément adapter la macro. En effet, plusieurs cellules, dont tu veux garder l'historique, dépendent de la valeurs de deux autres cellules "clés"... Tel qu'il est le code réagit aux deux changements mais tu risques d'avoir un doublon si tu changes toujours les deux obligatoirement...
Idem pour la partie G9:J9 j'ai l'impression que tu pensais à G10:H10 mais maintenant que tu as la marche à suivre tu devrais pouvoir adapter facilement...
 

Pièces jointes

  • Diem _v02.xls
    90 KB · Affichages: 77

kjin

XLDnaute Barbatruc
Re : pb affichage des valeurs temporaires d'une cellule

Bonsoir, Robert :)
Robert, je n'ai pas vraiment suivi, mais dans ton exemple, il suffit d'utiliser la méthode "Evaluate" pour renvoyer la valeur d'une cellule ou le résultat de la formule qu'elle contient sans recalculer la feuille
Code:
Private Sub Worksheet_Change(ByVal Target As Range) 'au changement dans l'onglet
If Target.Address <> "$A$1" Then Exit Sub 'si le changement a lieu ailleurs qu'en A1, sort de la procédure
If Range("C1").Value = "" Then 'condition : si C1 est vide
    Range("C1").Value =  [COLOR="Blue"]Evaluate[/COLOR](Range("A1").Value) 'ci prend la valeur de A1
Else 'sinon
    Range("C65536").End(xlUp).Offset(1, 0).Value = Range("A1").Value 'la première cellule vide en C prend la valeur de A1
End If 'fin de la condition
End Sub
Ou peut-être suis-je à coté
A+
kjin
 

Discussions similaires

Statistiques des forums

Discussions
312 177
Messages
2 085 972
Membres
103 073
dernier inscrit
MSCHOE16