Copier et coller définitvement valeur d'une cellule selon une autre qui varie

Martylinho

XLDnaute Nouveau
Bonjour,

Voici mon problème:
Je voudrais qu'un copier coller ce fasse automatiquement selon si une valeur est situé entre x et y.
Je m'explique, en A1 j'ai une valeur que change régulièrement, dès que A1 est situé entre 11 et 12 il faudrait que la valeur de A1 soit coller définitivement dans A2 ; dès que A1 est situé entre 10 et 11 il faudrait que la valeur de A1 soit coller définitivement dans A3 ...etc... Au fur et à mesure que les valeurs changent en A1 je voudrais avoir entre A2 et A? l'historique.

Est-ce possible à faire et surtout comment?
Merci à tous de votre aide
 

ayaflo

XLDnaute Junior
Re : Copier et coller définitvement valeur d'une cellule selon une autre qui varie

Salut Marty,

Ta valeur en A1,A2,A... change grâce à quoi? c'est toi qui fait un copier coller ou c'est une formule?

Si c'est un copier coller, tu viens écraser à chaque fois donc tu as pas le choix, il faut que tu passe par VBA pour comparer les valeurs de l'ancien tableau avec les nouvelles et copier ou non les nouvelles valeurs dans le tableau d'historique avec un test.
si c'est une formule suffit de faire un collage spécial valeur sur les valeurs souhaitées.

Le mieux serait que tu envoies un petit exemple, ce qui nous permettrait de t'aider.
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Copier et coller définitvement valeur d'une cellule selon une autre qui varie

Bonjour Martylinho et bienvenu, bonjour le forum,

On pourrait, à chaque changement, copier/coller l'ancienne valeur* . Mais se sont les conditions qui pour moi sont pas claires... Et si je tape 15 la première fois, 9 la seconde et 11 la troisième que dois faire le code ?

*Dans le fichier en pièce jointe, tape plusieurs valeurs successives dans la cellule A1 de l'onglet Feuil1...
 

Pièces jointes

  • Marthylinho_v01.xls
    24.5 KB · Affichages: 94

Martylinho

XLDnaute Nouveau
Re : Copier et coller définitvement valeur d'une cellule selon une autre qui varie

Bonjour Martylinho et bienvenu, bonjour le forum,

On pourrait, à chaque changement, copier/coller l'ancienne valeur* . Mais se sont les conditions qui pour moi sont pas claires... Et si je tape 15 la première fois, 9 la seconde et 11 la troisième que dois faire le code ?

*Dans le fichier en pièce jointe, tape plusieurs valeurs successives dans la cellule A1 de l'onglet Feuil1...

Merci pour la réactivité
Le fichier est plutôt bien mais comment as-tu fait?

Le problème est que la valeur en A1 change grâce à un autre fichier ce n'est pas moi qui change la valeur manuellement !
Comment dois-je faire?
 
Dernière édition:

Robert

XLDnaute Barbatruc
Repose en paix
Re : Copier et coller définitvement valeur d'une cellule selon une autre qui varie

Bonsoir Martylinho, bonsoir le forum,

Pour voir le code, clique avec le bouton droit en bas sur le nom de l'onglet (Feuil1) et choisis l'option Visualiser le code. J'avais utiliser les macro événementielles Change et SelectionChange.

Mais si le changement se fait à partir d'un autre fichier ça ne marchera pas. Comment se passe la récupération de la valeur ? Par macro ? Par formule ?
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Copier et coller définitvement valeur d'une cellule selon une autre qui varie

Bonsoir Martylinho, bonsoir le forum,

Non désolé Martylinho ! J'ai fait des tests en remplaçant la procédure Change par Calculate mais ne n'était pas fiable... Je n'ai pas de solution à te proposer.
 

Martylinho

XLDnaute Nouveau
Re : Copier et coller définitvement valeur d'une cellule selon une autre qui varie

Bonjour Robert,

Ce que tu as fait pour la cellule A1 du fichier que tu as joint est très bien mais peux-tu faire en sorte que cela fonctionne aussi pour les cellules de A2 à A30 ? Merci de me joindre le fichier.
Et encore merci de ton aide !
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : Copier et coller définitvement valeur d'une cellule selon une autre qui varie

Bonjour.
Je n'ai pas examiné les solutions proposées, je suppose qu'elle marchent, c'est juste de savoir quand ça doit s'exécuter.
Pourquoi pas Workbook_Activate dans ThisWorkbook ? A moins bien sûr que la valeur récupérée de l'autre classeur soit aussi une formule dépendant de celui-ci…
Cordialement
 

Martylinho

XLDnaute Nouveau
Re : Copier et coller définitvement valeur d'une cellule selon une autre qui varie

Bonjour.
Je n'ai pas examiné les solutions proposées, je suppose qu'elle marchent, c'est juste de savoir quand ça doit s'exécuter.
Pourquoi pas Workbook_Activate dans ThisWorkbook ? A moins bien sûr que la valeur récupérée de l'autre classeur soit aussi une formule dépendant de celui-ci…
Cordialement
Bonjour Dranreb,
En effet le fichier joint plus haut me vas bien, mais seulement cela ne fonctionne que pour A1. Il faudrait que ça fonctionne aussi pour A2, A3, A4 ... jusqu'à A30.
Merci
 

Dranreb

XLDnaute Barbatruc
Re : Copier et coller définitvement valeur d'une cellule selon une autre qui varie

Donc en partant du principe que les valeurs en colonne A ne changeront pas tant que le classeur sera actif, dans ThisWorkbook :
VB:
Option Explicit
Private Sub Workbook_Activate()
Dim CelA As Range, CelFin As Range
For Each CelA In Feuil1.[A1:A30]
   Set CelFin = CelA.Offset(, 1)
   If CelFin.Value = "" Then
      CelFin.Value = CelA.Value
   ElseIf CelA.Value <> "" Then
      Set CelFin = CelA.End(xlToRight)
      If CelFin.Value <> CelA.Value Then CelFin.Offset(, 1).Value = CelA.Value
      End If
   Next CelA
End Sub
Cordialement.
 

Martylinho

XLDnaute Nouveau
Re : Copier et coller définitvement valeur d'une cellule selon une autre qui varie

Donc en partant du principe que les valeurs en colonne A ne changeront pas tant que le classeur sera actif, dans ThisWorkbook :
VB:
Option Explicit
Private Sub Workbook_Activate()
Dim CelA As Range, CelFin As Range
For Each CelA In Feuil1.[A1:A30]
   Set CelFin = CelA.Offset(, 1)
   If CelFin.Value = "" Then
      CelFin.Value = CelA.Value
   ElseIf CelA.Value <> "" Then
      Set CelFin = CelA.End(xlToRight)
      If CelFin.Value <> CelA.Value Then CelFin.Offset(, 1).Value = CelA.Value
      End If
   Next CelA
End Sub
Cordialement.

Désolé mais cette solution ne vas pas sur mon fichier !
Le fichier joint plus haut me vas bien, mais seulement cela ne fonctionne que pour A1. Il faudrait que ça fonctionne aussi pour A2, A3, A4 ... jusqu'à A30.
Quelqu'un peut-il modifier le fichier fait par Robert ?
Merci
 

Discussions similaires

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 294
Messages
2 086 896
Membres
103 404
dernier inscrit
sultan87