Excel - Envoyer la valeur de la cellule à la cible
Problème
Est-il possible d'envoyer la valeur d'une cellule (copier-coller spécial) vers une autre cellule où la valeur ne serait pas perturbée lorsque la valeur source passe à '0'?
Ma feuille de calcul récapitulative du calculateur de la paie récupère chaque semaine les informations des autres feuilles de calcul dans le fichier Excel et calcule la paie de la semaine en cours. La semaine précédente avait des valeurs, mais maintenant, pendant la semaine en cours, les cellules de la semaine précédente sont 0.
Mon objectif est de conserver les valeurs de la semaine précédente dans un autre tableau de cellules afin que je puisse avoir un total cumulé pour le mois.
Exemple:
A3 a la formule:
= SI (A3 = 'Calculatrice de la paie'! M2, VLOOKUP (H1, 'Calculatrice de la paie'!! $ B $ 3: M $ 28, 8 $, FAUX), 0)
Cette valeur doit être enregistrée sur K3, mais uniquement si elle dépasse 0.
Si A3 renvoie une valeur de «0», toute valeur supérieure à «0» précédemment enregistrée dans K3 sera laissée seule.
Je l'ai facilement fait manuellement en copiant simplement les valeurs que je veux sauvegarder, puis en utilisant la commande "coller spécial" et en choisissant "valeurs", collées dans la cible. "Ignorer les blancs" ne fait rien. La macro:
Sous-macro1 ()
'
Macro1 Macro
'
'
Plage ("C3"). Sélectionnez
ActiveWindow.ScrollRow = 10
Plage ("C3: I52"). Sélectionnez
Sélection.Copie
Plage ("K3"). Sélectionnez
Selection.PasteSpecial Paste: = xlValues, Operation: = xlNone, SkipBlanks: = _
True, Transpose: = False
Plage ("K3"). Sélectionnez
Application.CutCopyMode = False
End Sub
Il écrase les valeurs des semaines précédentes avec des zéros, que je choisisse ou non d'ignorer les blancs (probablement parce que les cellules sont des zéros, pas des blancs!)
Je travaille avec le tableau A3: I54 et souhaite copier et coller toute valeur supérieure à "0" dans K3: Q54 en conservant les valeurs précédemment publiées dans K3: Q54 qui sont supérieures à "0".
Solution
Peut-être que cela peut vous amener dans la bonne direction si mon interprétation est correcte.
Ceci comparera la colonne A avec ce qui se trouve actuellement dans la colonne K ........
A1 compare la valeur en K1
A2 compare la valeur en K2
etc....
Si la colonne A est égale à zéro et que la colonne K est supérieure à zéro, conservez la valeur dans la colonne K. Sinon, copiez la valeur de la colonne A dans la colonne K.
Sub Macro1 () Dim jj = 3 Faites jusqu'à la plage ("A" & j) = "" Si la plage ("A" & j) = 0 Alors la plage ("K" & j) = la plage ("K" & j) Else Range ("K" & j) = Range ("A" & j) Fin Si j = j + 1 Boucle Fin Sub
Pour ajouter plusieurs colonnes, faites en sorte que la macro ressemble à "C: K"
Sub Macro1 () Dim jj = 3 Faites jusqu'à la plage ("C" & j) = "" Si la plage ("C" & j) = 0 Alors la plage ("K" & j) = la plage ("K" & j) Else Range ("K" & j) = Plage ("C" & j) End If If Range ("D" & j) = 0 Puis Plage ("L" & j) = Plage ("L" & j) Sinon Plage ("L" & j) = Plage ("D" & j) Fin Si Si Plage ("E" & j) = 0 Puis Plage ("M" & j) = Plage ("M" & j) Autre plage ("M" & j) = Plage ("E" & j) Fin Si Si Plage ("F" & j) = 0 Alors Plage ("N" & j) = Plage ("N" & j) Autre Plage ( "N" & j) = Plage ("F" & j) Fin Si Si Plage ("G" & j) = 0 Puis Plage ("O" & j) = Plage ("O" & j) Autre Plage (" O "& j) = Plage (" G "& j) Fin Si Si Plage (" H "& j) = 0 Alors Plage (" P "& j) = Plage (" P "& j) Autre Plage (" P "& j) = Plage (" H "& j) Fin Si Si Plage (" I "& j) = 0 Alors Plage (" Q "& j) = Plage (" Q "& j) Autre Plage (" Q " & j) = Plage ("I" & j) Fin Si j = j + 1 Boucle Fin Sub
Notez que
Merci à WutUp WutUp pour cette astuce sur le forum.