Supprimer dans cellule et garder dans l'autre

Bonjour à tous,

voila j'ai 2 colonnes ( A et B ) dans B je copie automatiquement la cellule A

et je voudrais si je supprime le montant dans A que ca reste dans B

merci de votre réponse !

13classeur1.xlsx (9.15 Ko)

Bonjour benoist,

Au plus simple : tu copies les valeurs de la colonne B puis tu les colles en valeurs dans la même colonne.

Bonjour Benoist, bonjour JB,

J'avais imaginé une autre solution par macro.

Cordialement.

12classeur-12-22.xlsm (15.08 Ko)

merci bcq, excellent c'est juste ce qu'il me faut !

bonjour benoist, salut Yvouille,

si on change plusieurs cellules "A" en même temps (copier une cellule et coller sur plusieurs cellules A), ceci fonctionne mieux.

10classeur-12-22.xlsm (14.91 Ko)

Bonjour

Lorsque vous écrivez

et je voudrais si je supprime le montant dans A que ca reste dans B

Je suppose que l'idée n'est pas vider la cellule ou de mettre A1 à 0 ?
En gros je veux dire que vous changez le montant en A1 sans jamais le mettre à 0

Là on pouvais faire sans code... en jouant sur l'itération

Cordialement

re bonsoir, je reviens vers vous avec se nouveau fichier qui est presque bon pour moi ( j'ai modifier pour l'essai )

sur les colonnes f et g pour l'application mais ca fonctionne pas bien

10essai.xlsm (17.92 Ko)

Re

Ce n'est pas plutot ceci que vous voulez

Private Sub Worksheet_Change(ByVal Target As Range)
Dim plage As Range
Set plage = Range("F2:F" & Range("A" & Rows.Count).End(xlUp).Row)
If Not Intersect(Target, plage) Is Nothing Then
     If Target.value <> 0 Then Target.Offset(, 1).Value = Target.Value
End If
End Sub

Crdlt

Si ok et terminé pensez à cloturer le fil

re,

bonjour Dan,

avec votre macro, comme celle d'Yvouille, vous ne gèrez pas bien les cellules si target contient plusieurs cellules.

Dans ma macro, au lieu de If .Value <> "" Then .Offset(, 1).Value = .Value, il faut changer ce "" en 0

   If .Value <> 0 Then .Offset(, 1).Value = .Value

utilisez cette macro pour le teste

Sub test()
     Range("B1,c2,d3,e4,f5").Value = 123
End Sub

@BsAlv

Dans mon code vous voyez où "" ?

re,

@Dan, non, ce n'est pas dans votre macro. Votre macro est bien pour des modifs uniquement en colonne F mais quand target estplus grand que F ...

Votre macro est bien pour des modifs uniquement en colonne F..

C'est ce que Benoist a demandé. Tout est dans le titre et son premier post
Garder la valeur en colonne G si F est changé
On parle donc d'une cellule pas d'un groupe de cellules à modifier

Ou alors je n'ai pas compris sa demande

Edit : si le cas concerne une groupe de cellule et donc une multi-sélection, il suffit de rajouter cette instruction juste en dessous de Dim plage....

If Target.Count > 1 Then Exit Sub

@Dan

C'est l'attitude défensive du programmeur, on l'a demandé de telle manière ...

Avec ma macro, on peut faire n'importe quoi, le "target" est réduit à la colonne A et chaque cellule A modifiée sera traitée, aucun parapluie qui s'ouvre ...

@Bsalv

C'est l'attitude défensive du programmeur, on l'a demandé de telle manière ...

Je ne fais pas du parapluie et pas d'attitude de défense. C'est une proposition simple qui fonctionne.

okay

bonsoir et bonne année à tous,

super pour les colonnes F G

j'aimerais avoir la même chose avec les colonnes J K et L M

j'ai bien essayé de copier le code en rajoutant 2 lignes et en changant les lettres mais on doit changer quelque chose !!!!!!

12essai.xltm (17.13 Ko)

merci !

re,

vous utilisez la méthode Dan, donc

Private Sub Worksheet_Change(ByVal Target As Range)
     Dim plage As Range, i
     i = Range("A" & Rows.Count).End(xlUp).Row
     Set plage = Range("F1:F" & i & ",J1:J" & i & ",L1:L" & i)
     If Not Intersect(Target, plage) Is Nothing Then
          If Target.Value <> 0 Then Target.Offset(, 1).Value = Target.Value
     End If
End Sub

Re,

Oui très bien, merci du coup de main !

re,

petit problème que je viens de voir

lorsque je supprime après l'intérieure des colonnes E, J, L en sélectionnant toute la colonne j'ai une erreur !

par contre une par une par cellule c'est bon.

re,

alors comme ceci ?

Private Sub Worksheet_Change(ByVal Target As Range)
     Dim Isect As Range, Plage, c, i

     i = Range("A" & Rows.Count).End(xlUp).Row
     Set Plage = Range("F1:F" & i & ",J1:J" & i & ",L1:L" & i)
     Set Isect = Intersect(Target, Plage)     'ignorer les cellules modifiées qui ne sont pas "A"
     If Isect Is Nothing Then Exit Sub

     For Each c In Isect.Cells               'chaque cellule A modifiée
          With c
               If .Value <> 0 Then .Offset(, 1).Value = .Value
          End With
     Next

End Sub
Rechercher des sujets similaires à "supprimer garder"