XL 2019 Copier uniquement de valeurs (en ignorant les formules)

ST4423

XLDnaute Nouveau
Rebonjour à tous,

Second problème du jour pour moi : Je cherche un moyen de copier une plage de données en ne copiant que les valeurs (et tant qu'a faire si l'inverse est possible je suis preneur).

Je précise donc que je veux que la copie ignore les formules. Il ne s'agit pas de faire une copie avec collage spéciale des valeurs, auquel cas on écrase les formules par leurs valeurs.

En gros l'idée c'est que j'ai une colonne avec des formules dont plusieurs valeurs on été forcées, et je cherche à récupérer ces valeurs uniquement.

Merci d'avance.
 
Solution
Bonjour mutzik,

Ce n'est pas vraiment ce que je cherche.

Actuellement j'ai un code VBA pour copier uniquement les valeurs en texte (Qui exclu donc la copie des formules) dans un tableau vers un autre tableau. Seulement cette copie ignore aussi les cellules vide (sans formules), or je souhaiterais pouvoir copier les cellules vides quand ce n'est pas le résultat d'une formules.
Bonjour,
Remplacez la macro de @Cousinhub complétée comme suit :
VB:
Sub Copie_Const()
Dim T_Source As ListObject, T_Dest As ListObject
Dim Cel As Range
Dim Col As Long, Lig As Long
With Application
    .ScreenUpdating = False
    .Calculation = xlCalculationManual
End With
Set T_Source = Range("Tableau2").ListObject 'nom du Tableau à adapter, ancien...

Cousinhub

XLDnaute Barbatruc
Bonjour,
Avec ma compréhension...
Le code :

VB:
Sub Copie_Const()
Dim T_Source As ListObject, T_Dest As ListObject
Dim Cel As Range
Dim Col As Long, Lig As Long
With Application
    .ScreenUpdating = False
    .Calculation = xlCalculationManual
End With
Set T_Source = Range("Tableau2").ListObject 'nom du Tableau à adapter, ancien tableau
Set T_Dest = Range("Tableau1").ListObject 'nom du Tableau à adapter, nouveau tableau à modifier
Lig = T_Source.HeaderRowRange.Row: Col = T_Source.Range.Column - 1
For Each Cel In T_Source.DataBodyRange.SpecialCells(xlCellTypeConstants, 23)
    T_Dest.DataBodyRange(Cel.Row - Lig, Cel.Column - Col) = Cel.Value
Next Cel
Application.Calculation = xlCalculationAutomatic
End Sub

Le fichier test
Bonne soirée
 

Pièces jointes

  • copie constantes.xlsm
    19.6 KB · Affichages: 5

Gégé-45550

XLDnaute Accro
Bonjour mutzik,

Ce n'est pas vraiment ce que je cherche.

Actuellement j'ai un code VBA pour copier uniquement les valeurs en texte (Qui exclu donc la copie des formules) dans un tableau vers un autre tableau. Seulement cette copie ignore aussi les cellules vide (sans formules), or je souhaiterais pouvoir copier les cellules vides quand ce n'est pas le résultat d'une formules.
Bonjour,
Remplacez la macro de @Cousinhub complétée comme suit :
VB:
Sub Copie_Const()
Dim T_Source As ListObject, T_Dest As ListObject
Dim Cel As Range
Dim Col As Long, Lig As Long
With Application
    .ScreenUpdating = False
    .Calculation = xlCalculationManual
End With
Set T_Source = Range("Tableau2").ListObject 'nom du Tableau à adapter, ancien tableau
Set T_Dest = Range("Tableau1").ListObject 'nom du Tableau à adapter, nouveau tableau à modifier
Lig = T_Source.HeaderRowRange.Row: Col = T_Source.Range.Column - 1
For Each Cel In T_Source.DataBodyRange.SpecialCells(xlCellTypeConstants, 23)
    T_Dest.DataBodyRange(Cel.Row - Lig, Cel.Column - Col) = Cel.Value
Next Cel
For Each Cel In T_Source.DataBodyRange.Cells.SpecialCells(xlCellTypeBlanks)
    T_Dest.DataBodyRange(Cel.Row - Lig, Cel.Column - Col) = Cel.Value
Next Cel
Application.Calculation = xlCalculationAutomatic
End Sub
Cordialement,
 

TooFatBoy

XLDnaute Barbatruc
Bonjour,

Second problème du jour pour moi : Je cherche un moyen de copier une plage de données en ne copiant que les valeurs (et tant qu'a faire si l'inverse est possible je suis preneur).

Je précise donc que je veux que la copie ignore les formules. Il ne s'agit pas de faire une copie avec collage spéciale des valeurs, auquel cas on écrase les formules par leurs valeurs.
Tu veux "copier" uniquement les valeurs sans écraser les formules ???

Est-ce que tu veux dire que tu as une plage avec des valeurs saisies et des formules, mais que tu ne veux copier/coller que les valeurs saisies ?
 

ST4423

XLDnaute Nouveau
Bonjour,


Tu veux "copier" uniquement les valeurs sans écraser les formules ???

Est-ce que tu veux dire que tu as une plage avec des valeurs saisies et des formules, mais que tu ne veux copier/coller que les valeurs saisies ?
Oui c'est exactement ça TooFatBoy.
En faite l'inverse pourrait aussi m'intéresser, mais dans mon cas comme j'ai mis à jour la formule de ma colonne, j'ai donc écrasé aussi les valeurs écrite en manuel. Je voudrais donc pouvoir les récupérer depuis une copie avec un copier/coller, mais bien sûr en gardant les formules mise à jour (qui ne le sont pas dans la copie de mon fichier). Du coup je me suis dit que s'il y avait un moyen de copier uniquement ces valeurs et non les formules ça serait génial.

Sinon merci pour ton retour don_pets. je regarde ça tout de suite pour voir si ça marche, mais je suis pas un expert en VBA donc il faut que je vois un peu comment ça fonctionne.
 

TooFatBoy

XLDnaute Barbatruc
Oui c'est exactement ça TooFatBoy.
Dans ce cas, il faudra passer par du VBA, je pense.


Sinon merci pour ton retour don_pets. je regarde ça tout de suite pour voir si ça marche, mais je suis pas un expert en VBA donc il faut que je vois un peu comment ça fonctionne.
C'est un collage spécial pour coller les valeurs, dont les résultats des formules. :(
 

ST4423

XLDnaute Nouveau
Je plussoie !
Salut l'ami ;)
Bonjour Gégé-45550, bon j'aurais préféré éviter cette voie, mais si c'est le seul moyen alors tant pis =S.

Auriez-vous des piste pour élaborer ce fameux code ?

J'ai découvert sur internet qu'il existait une formule "ESTFORMULE" qui renvoie la valeur VRAI ou FAUX selon qu'une cellule contient une formule ou non. Je ne sais pas si toute les formules sont reproductible en VBA, auquel cas ça pourrait être une piste non ?
 

don_pets

XLDnaute Occasionnel
je reprends le fil de la discussion entre deux réu,

je voudrais bien comprendre la demande. En gros tu as une plage de données qui contient des formules, et toi tu veux coller le résultat de ces formules sur une autre plage ? That's it ?

Tu pourrais envoyer un morceau de fichier avec ce que tu veux en résultat, comme ça en un je comprends mieux la demande, et surtout en deux, je te ponds ton code en fonction du point 1
 

ST4423

XLDnaute Nouveau
J'aurais aimé pouvoir partager le fichier, je me doute que ça serait plus clair. Malheureusement il se trouve sur un réseau sécurisé et je n'ai pas le droit de le partager.

Je vais moi aussi partir en réunion, mais je vais essayer de composer un petit fichier d'exemple après celle-ci.

Mais dans l'idée je veux copier les valeurs écrites d'une colonne sans faire la copie des formules. Je veux pouvoir copier et coller ma colonne sans effacer les formules qui sont écrite et juste réécrire les valeurs par dessus.
 

ST4423

XLDnaute Nouveau
J'aurais aimé pouvoir partager le fichier, je me doute que ça serait plus clair. Malheureusement il se trouve sur un réseau sécurisé et je n'ai pas le droit de le partager.

Je vais moi aussi partir en réunion, mais je vais essayer de composer un petit fichier d'exemple après celle-ci.

Mais dans l'idée je veux copier les valeurs écrites d'une colonne sans faire la copie des formules. Je veux pouvoir copier et coller ma colonne sans effacer les formules qui sont écrite et juste réécrire les valeurs par dessus.
Voilà donc : Il s'agit d'une copie très grossière, mais dans l'idée ça serait ça pour la partie qui m'intéresse. Le fichier de base lui fait plus de 20000 lignes et a beaucoup plus de colonnes.

Maintenant si je souhaite copier la colonne "DI" en colonne B du fichier, je voudrais pouvoir copier uniquement les cellules qui sont en jaune, à savoir celles qui ont été forcées et qui ne sont plus des formules.
 

Pièces jointes

  • Copie_valeurs.xlsx
    13.4 KB · Affichages: 6

Discussions similaires

Statistiques des forums

Discussions
312 378
Messages
2 087 746
Membres
103 658
dernier inscrit
Laurent2017