Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Macro Copie de Valeur seulement

32 réponses
Avatar
Billy
Bonjour,

Dans une feuille, j'ai la macro suivante qui me permet de décaler (ou copier
devrais-je dire) ma ligne 13 une ligne vers le bas.Toutefois, j'essaie de
l'adapter pour copier uniquement les valeurs et non les formules sur cette
ligne plus bas. Étant de niveau débutante, j'éprouve de la difficulté.

Sub ausuivant()

With [a13:S13]
.Copy
.Insert Shift:=xlDown
[a13:S13].SpecialCells(xlCellTypeConstants, 23).ClearContents
End With

End Sub

Merci beaucoup de votre aide!

--
Billy

10 réponses

1 2 3 4
Avatar
cousinhub
De ce que j'ai compris, il copie la ligne 13, elle va en 14, dans la 13,
il efface tout ce qui n'est pas une formule (afin de les préserver), et
dans la 14, il ne désire que les valeurs.
Le [a14:S14].Value = [a14:S14].Value remplace donc toutes les cellules
(formules ou constantes) par les valeurs qui vont bien.
Enfin d'après ce que j'ai compris....;-)

oops, cousinhub, c'est ce que j'avais susurré à l'oreille de Billy mais
j'aurais du tester avant : la ligne que nous suggérions fait que les
valeurs comprises dans A14:S14 disparaissent (chez moi, tout du moins)
si Billy sait où sont ses formules (et elle doit le savoir) il faut
qu'elle décline une à une les cellules avec formules, par ex :

Range("C14, G14,I14,L14,O14,S14") = Range("C14, G14,I14,L14,O14,S14")

par contre je suis preneur d'une explication pour ce qui se passe quand
on donne toute la plage...!!!
jps

"cousinhub" a écrit dans le message de news:
O%
Bonjour, rajoute à la fin de ton code :
[a14:S14].Value = [a14:S14].Value
Bonne journée

Bonjour,

Dans une feuille, j'ai la macro suivante qui me permet de décaler (ou
copier devrais-je dire) ma ligne 13 une ligne vers le bas.Toutefois,
j'essaie de l'adapter pour copier uniquement les valeurs et non les
formules sur cette ligne plus bas. Étant de niveau débutante,
j'éprouve de la difficulté.

Sub ausuivant()

With [a13:S13]
.Copy
.Insert Shift:=xlDown
[a13:S13].SpecialCells(xlCellTypeConstants, 23).ClearContents
End With

End Sub

Merci beaucoup de votre aide!








Avatar
cousinhub
Re,
ça ne fonctionne pas parce que tu n'as pas de constantes dans ta ligne
13 lorsque tu fais ton essai
et tu rajoutes cette ligne :
Sub ausuivant()

With [a13:S13]
.Copy
.Insert Shift:=xlDown
[a13:S13].SpecialCells(xlCellTypeConstants, 23).ClearContents
End With
[a14:S14].Value = [a14:S14].Value '<= ICI
End Sub

Bonjour,

Ca fonctionne pas. Il me met en erreur la ligne
[a13:S13].SpecialCells(xlCellTypeConstants, 23).ClearContents

Peut-être que je ne place pas la procédure au bon endroit. Où devrais-je
placer précisément : [a14:S14].Value = [a14:S14].Value

Je comprends pas non plus cette procédure ... Est-ce que ce ne devrais pas
être [a14:s14].Value = [a13:S13].value ?

Merci de ta belle patience avec moi qui est si débutante! :)



Avatar
Billy
Bonjour Serge,

Comment pourrais-je adapter cette procédure pour garder les formules en A13
à C13. Je voudrais supprimer le contenu que de D13 à S13.

Aussi mes mises en forme de bordure ne suivent pas. Ce n'est pas très
problématique, mais j'aimerais beaucoup les conserver. Est-ce possible tu
crois?

--
Billy



Peut-être ainsi :

Sub Copie()
Rows("14:14").Insert Shift:=xlDown
Rows("13:13").Copy
Rows("14:14").PasteSpecial Paste:=xlPasteValues
Rows("13:13").ClearContents 'Si tu veux
Application.CutCopyMode = False
End Sub

Serge



"Billy" a écrit dans le message de news:
Bonjour,

J'ai besoin de garder la procédure " .Insert Shift:=xlDown" car je fais mes
entrées de données toujours sur la ligne 13. Et l'idée est que les données
descendent une ligne plus bas à chaque nouvelle entrée. C'est pourquoi que
j'aimerais adapter cette cette macro pour que ce soit uniquement les valeurs
et non les formules qui se copient sur la ligne plus bas.

Sub ausuivant()

With [a13:S13]
.Copy
.Insert Shift:=xlDown
[a13:S13].SpecialCells(xlCellTypeConstants, 23).ClearContents
End With

End Sub

J'y arrive pas du tout. J'essaie d'ajouter à la ligne .Copy :
.Copy.Value

...mais ca fonctionne pas.

Un gros merci encore! Vous êtes tellement gentils de m'aider!


--
Billy



Et si tu veux faire disparaître le contenu de la plage [a13:s13] :

Sub Au_Suivant()
[a14:s14] = [a13:s13].Value
[a13:s13].ClearContents
End Sub

Serge



"garnote" a écrit dans le message de news:
Salut Billy,

Est-ce que ceci te convient ?
Sub Au_Suivant()
[a14:s14] = [a13:s13].Value
End Sub

Serge

"Billy" a écrit dans le message de news:

Bonjour,

Dans une feuille, j'ai la macro suivante qui me permet de décaler (ou copier
devrais-je dire) ma ligne 13 une ligne vers le bas.Toutefois, j'essaie de
l'adapter pour copier uniquement les valeurs et non les formules sur cette
ligne plus bas. Étant de niveau débutante, j'éprouve de la difficulté.

Sub ausuivant()

With [a13:S13]
.Copy
.Insert Shift:=xlDown
[a13:S13].SpecialCells(xlCellTypeConstants, 23).ClearContents
End With

End Sub

Merci beaucoup de votre aide!

--
Billy


















Avatar
Billy
Salut Jps,

Mes formules sont dans A11 à C11. J'avais mis en A13 et C13 une formule du
genre =Indirect(adresse(11,1)).

Idéalement, si cette formule en A13 et C13 pourrait être conserver à cette
endroit, ca fonctionnerait à merveille.
--
Billy



oops, cousinhub, c'est ce que j'avais susurré à l'oreille de Billy mais
j'aurais du tester avant : la ligne que nous suggérions fait que les valeurs
comprises dans A14:S14 disparaissent (chez moi, tout du moins)
si Billy sait où sont ses formules (et elle doit le savoir) il faut qu'elle
décline une à une les cellules avec formules, par ex :

Range("C14, G14,I14,L14,O14,S14") = Range("C14, G14,I14,L14,O14,S14")

par contre je suis preneur d'une explication pour ce qui se passe quand on
donne toute la plage...!!!
jps

"cousinhub" a écrit dans le message de news:
O%
Bonjour, rajoute à la fin de ton code :
[a14:S14].Value = [a14:S14].Value
Bonne journée

Bonjour,

Dans une feuille, j'ai la macro suivante qui me permet de décaler (ou
copier devrais-je dire) ma ligne 13 une ligne vers le bas.Toutefois,
j'essaie de l'adapter pour copier uniquement les valeurs et non les
formules sur cette ligne plus bas. Étant de niveau débutante, j'éprouve
de la difficulté.

Sub ausuivant()

With [a13:S13]
.Copy
.Insert Shift:=xlDown
[a13:S13].SpecialCells(xlCellTypeConstants, 23).ClearContents
End With

End Sub

Merci beaucoup de votre aide!









Avatar
cousinhub
tu peux également mettre ceci :
Sub essai()
With [a13:S13]
.Copy
.Insert Shift:=xlDown
[a14:S14].Value = .Value
[a13:S13].SpecialCells(xlCellTypeConstants, 23).ClearContents
End With
End Sub


Bonjour,

Ca fonctionne pas. Il me met en erreur la ligne
[a13:S13].SpecialCells(xlCellTypeConstants, 23).ClearContents

Peut-être que je ne place pas la procédure au bon endroit. Où devrais-je
placer précisément : [a14:S14].Value = [a14:S14].Value

Je comprends pas non plus cette procédure ... Est-ce que ce ne devrais pas
être [a14:s14].Value = [a13:S13].value ?

Merci de ta belle patience avec moi qui est si débutante! :)



Avatar
garnote
Salut Billy,

De A13 à C13, tu as des formules,
De D13 à S13, tu entres des données,
Tu veux insérer sous la ligne 13 une ligne qui contiendrait
les valeurs et les formats de A13:C13 et effacer les données
de C13:S13.

Est-ce bien ça que tu veux obtenir ?

Serge


"Billy" a écrit dans le message de news:
Bonjour Serge,

Comment pourrais-je adapter cette procédure pour garder les formules en A13
à C13. Je voudrais supprimer le contenu que de D13 à S13.

Aussi mes mises en forme de bordure ne suivent pas. Ce n'est pas très
problématique, mais j'aimerais beaucoup les conserver. Est-ce possible tu
crois?

--
Billy



Peut-être ainsi :

Sub Copie()
Rows("14:14").Insert Shift:=xlDown
Rows("13:13").Copy
Rows("14:14").PasteSpecial Paste:=xlPasteValues
Rows("13:13").ClearContents 'Si tu veux
Application.CutCopyMode = False
End Sub

Serge



"Billy" a écrit dans le message de news:
Bonjour,

J'ai besoin de garder la procédure " .Insert Shift:=xlDown" car je fais mes
entrées de données toujours sur la ligne 13. Et l'idée est que les données
descendent une ligne plus bas à chaque nouvelle entrée. C'est pourquoi que
j'aimerais adapter cette cette macro pour que ce soit uniquement les valeurs
et non les formules qui se copient sur la ligne plus bas.

Sub ausuivant()

With [a13:S13]
.Copy
.Insert Shift:=xlDown
[a13:S13].SpecialCells(xlCellTypeConstants, 23).ClearContents
End With

End Sub

J'y arrive pas du tout. J'essaie d'ajouter à la ligne .Copy :
.Copy.Value

...mais ca fonctionne pas.

Un gros merci encore! Vous êtes tellement gentils de m'aider!


--
Billy



Et si tu veux faire disparaître le contenu de la plage [a13:s13] :

Sub Au_Suivant()
[a14:s14] = [a13:s13].Value
[a13:s13].ClearContents
End Sub

Serge



"garnote" a écrit dans le message de news:
Salut Billy,

Est-ce que ceci te convient ?
Sub Au_Suivant()
[a14:s14] = [a13:s13].Value
End Sub

Serge

"Billy" a écrit dans le message de news:

Bonjour,

Dans une feuille, j'ai la macro suivante qui me permet de décaler (ou copier
devrais-je dire) ma ligne 13 une ligne vers le bas.Toutefois, j'essaie de
l'adapter pour copier uniquement les valeurs et non les formules sur cette
ligne plus bas. Étant de niveau débutante, j'éprouve de la difficulté.

Sub ausuivant()

With [a13:S13]
.Copy
.Insert Shift:=xlDown
[a13:S13].SpecialCells(xlCellTypeConstants, 23).ClearContents
End With

End Sub

Merci beaucoup de votre aide!

--
Billy




















Avatar
jps
re oops coucinhub
en fait, j'ai compris pourquoi avec la plage complète, ça ne marchait pas :
il faut absolument le .Value
alors que cellule par cellule, on peut s'en penser....strange, very strange
enfin, l'important est que sarko soit chez un pote à bill gates : ainsi,
quand il nous reviendra, toutes nos procs marcheront comme sur des roulettes
jps

"cousinhub" a écrit dans le message de news:

De ce que j'ai compris, il copie la ligne 13, elle va en 14, dans la 13,
il efface tout ce qui n'est pas une formule (afin de les préserver), et
dans la 14, il ne désire que les valeurs.
Le [a14:S14].Value = [a14:S14].Value remplace donc toutes les cellules
(formules ou constantes) par les valeurs qui vont bien.
Enfin d'après ce que j'ai compris....;-)

oops, cousinhub, c'est ce que j'avais susurré à l'oreille de Billy mais
j'aurais du tester avant : la ligne que nous suggérions fait que les
valeurs comprises dans A14:S14 disparaissent (chez moi, tout du moins)
si Billy sait où sont ses formules (et elle doit le savoir) il faut
qu'elle décline une à une les cellules avec formules, par ex :

Range("C14, G14,I14,L14,O14,S14") = Range("C14, G14,I14,L14,O14,S14")

par contre je suis preneur d'une explication pour ce qui se passe quand
on donne toute la plage...!!!
jps

"cousinhub" a écrit dans le message de news:
O%
Bonjour, rajoute à la fin de ton code :
[a14:S14].Value = [a14:S14].Value
Bonne journée

Bonjour,

Dans une feuille, j'ai la macro suivante qui me permet de décaler (ou
copier devrais-je dire) ma ligne 13 une ligne vers le bas.Toutefois,
j'essaie de l'adapter pour copier uniquement les valeurs et non les
formules sur cette ligne plus bas. Étant de niveau débutante, j'éprouve
de la difficulté.

Sub ausuivant()

With [a13:S13]
.Copy
.Insert Shift:=xlDown
[a13:S13].SpecialCells(xlCellTypeConstants, 23).ClearContents
End With

End Sub

Merci beaucoup de votre aide!










Avatar
Billy
--
Billy

Salut,
C'est cela, mais effacer les données de D13 à S13...

Et je dois trouver un moyen de protéger ma feuille (sauf de D13 à S13) sans
que mes macros boguent.

... tout un défi!



Salut Billy,

De A13 à C13, tu as des formules,
De D13 à S13, tu entres des données,
Tu veux insérer sous la ligne 13 une ligne qui contiendrait
les valeurs et les formats de A13:C13 et effacer les données
de C13:S13.

Est-ce bien ça que tu veux obtenir ?

Serge


"Billy" a écrit dans le message de news:
Bonjour Serge,

Comment pourrais-je adapter cette procédure pour garder les formules en A13
à C13. Je voudrais supprimer le contenu que de D13 à S13.

Aussi mes mises en forme de bordure ne suivent pas. Ce n'est pas très
problématique, mais j'aimerais beaucoup les conserver. Est-ce possible tu
crois?

--
Billy



Peut-être ainsi :

Sub Copie()
Rows("14:14").Insert Shift:=xlDown
Rows("13:13").Copy
Rows("14:14").PasteSpecial Paste:=xlPasteValues
Rows("13:13").ClearContents 'Si tu veux
Application.CutCopyMode = False
End Sub

Serge



"Billy" a écrit dans le message de news:
Bonjour,

J'ai besoin de garder la procédure " .Insert Shift:=xlDown" car je fais mes
entrées de données toujours sur la ligne 13. Et l'idée est que les données
descendent une ligne plus bas à chaque nouvelle entrée. C'est pourquoi que
j'aimerais adapter cette cette macro pour que ce soit uniquement les valeurs
et non les formules qui se copient sur la ligne plus bas.

Sub ausuivant()

With [a13:S13]
.Copy
.Insert Shift:=xlDown
[a13:S13].SpecialCells(xlCellTypeConstants, 23).ClearContents
End With

End Sub

J'y arrive pas du tout. J'essaie d'ajouter à la ligne .Copy :
.Copy.Value

...mais ca fonctionne pas.

Un gros merci encore! Vous êtes tellement gentils de m'aider!


--
Billy



Et si tu veux faire disparaître le contenu de la plage [a13:s13] :

Sub Au_Suivant()
[a14:s14] = [a13:s13].Value
[a13:s13].ClearContents
End Sub

Serge



"garnote" a écrit dans le message de news:
Salut Billy,

Est-ce que ceci te convient ?
Sub Au_Suivant()
[a14:s14] = [a13:s13].Value
End Sub

Serge

"Billy" a écrit dans le message de news:

Bonjour,

Dans une feuille, j'ai la macro suivante qui me permet de décaler (ou copier
devrais-je dire) ma ligne 13 une ligne vers le bas.Toutefois, j'essaie de
l'adapter pour copier uniquement les valeurs et non les formules sur cette
ligne plus bas. Étant de niveau débutante, j'éprouve de la difficulté.

Sub ausuivant()

With [a13:S13]
.Copy
.Insert Shift:=xlDown
[a13:S13].SpecialCells(xlCellTypeConstants, 23).ClearContents
End With

End Sub

Merci beaucoup de votre aide!

--
Billy

























Avatar
Billy
Bonjour!

Ca avance! Ca semble fonctionner! Un beau merci!

Il me reste qu'à trouver un moyen de protéger ma feuille sans que mes macros
boguent! J'essaie de dévérouiller que les cellules D13 à S13, mais j'ai des
problèmes La méthode Insert semble boguer quand j'active la protection.

Je travaille fort là-dessus...
--
Billy



De ce que j'ai compris, il copie la ligne 13, elle va en 14, dans la 13,
il efface tout ce qui n'est pas une formule (afin de les préserver), et
dans la 14, il ne désire que les valeurs.
Le [a14:S14].Value = [a14:S14].Value remplace donc toutes les cellules
(formules ou constantes) par les valeurs qui vont bien.
Enfin d'après ce que j'ai compris....;-)

oops, cousinhub, c'est ce que j'avais susurré à l'oreille de Billy mais
j'aurais du tester avant : la ligne que nous suggérions fait que les
valeurs comprises dans A14:S14 disparaissent (chez moi, tout du moins)
si Billy sait où sont ses formules (et elle doit le savoir) il faut
qu'elle décline une à une les cellules avec formules, par ex :

Range("C14, G14,I14,L14,O14,S14") = Range("C14, G14,I14,L14,O14,S14")

par contre je suis preneur d'une explication pour ce qui se passe quand
on donne toute la plage...!!!
jps

"cousinhub" a écrit dans le message de news:
O%
Bonjour, rajoute à la fin de ton code :
[a14:S14].Value = [a14:S14].Value
Bonne journée

Bonjour,

Dans une feuille, j'ai la macro suivante qui me permet de décaler (ou
copier devrais-je dire) ma ligne 13 une ligne vers le bas.Toutefois,
j'essaie de l'adapter pour copier uniquement les valeurs et non les
formules sur cette ligne plus bas. Étant de niveau débutante,
j'éprouve de la difficulté.

Sub ausuivant()

With [a13:S13]
.Copy
.Insert Shift:=xlDown
[a13:S13].SpecialCells(xlCellTypeConstants, 23).ClearContents
End With

End Sub

Merci beaucoup de votre aide!











Avatar
garnote
Alors essaie ceci :

Sub Copie()
Rows("14:14").Insert Shift:=xlDown
Rows("13:13").Copy
Rows("14:14").PasteSpecial Paste:=xlPasteFormats
Rows("14:14").PasteSpecial Paste:=xlPasteValues
[D13:S13].ClearContents
Application.CutCopyMode = False
End Sub

Serge


"Billy" a écrit dans le message de news:

--
Billy

Salut,
C'est cela, mais effacer les données de D13 à S13...

Et je dois trouver un moyen de protéger ma feuille (sauf de D13 à S13) sans
que mes macros boguent.

... tout un défi!



Salut Billy,

De A13 à C13, tu as des formules,
De D13 à S13, tu entres des données,
Tu veux insérer sous la ligne 13 une ligne qui contiendrait
les valeurs et les formats de A13:C13 et effacer les données
de C13:S13.

Est-ce bien ça que tu veux obtenir ?

Serge


"Billy" a écrit dans le message de news:
Bonjour Serge,

Comment pourrais-je adapter cette procédure pour garder les formules en A13
à C13. Je voudrais supprimer le contenu que de D13 à S13.

Aussi mes mises en forme de bordure ne suivent pas. Ce n'est pas très
problématique, mais j'aimerais beaucoup les conserver. Est-ce possible tu
crois?

--
Billy



Peut-être ainsi :

Sub Copie()
Rows("14:14").Insert Shift:=xlDown
Rows("13:13").Copy
Rows("14:14").PasteSpecial Paste:=xlPasteValues
Rows("13:13").ClearContents 'Si tu veux
Application.CutCopyMode = False
End Sub

Serge



"Billy" a écrit dans le message de news:

Bonjour,

J'ai besoin de garder la procédure " .Insert Shift:=xlDown" car je fais mes
entrées de données toujours sur la ligne 13. Et l'idée est que les données
descendent une ligne plus bas à chaque nouvelle entrée. C'est pourquoi que
j'aimerais adapter cette cette macro pour que ce soit uniquement les valeurs
et non les formules qui se copient sur la ligne plus bas.

Sub ausuivant()

With [a13:S13]
.Copy
.Insert Shift:=xlDown
[a13:S13].SpecialCells(xlCellTypeConstants, 23).ClearContents
End With

End Sub

J'y arrive pas du tout. J'essaie d'ajouter à la ligne .Copy :
.Copy.Value

...mais ca fonctionne pas.

Un gros merci encore! Vous êtes tellement gentils de m'aider!


--
Billy



Et si tu veux faire disparaître le contenu de la plage [a13:s13] :

Sub Au_Suivant()
[a14:s14] = [a13:s13].Value
[a13:s13].ClearContents
End Sub

Serge



"garnote" a écrit dans le message de news:
Salut Billy,

Est-ce que ceci te convient ?
Sub Au_Suivant()
[a14:s14] = [a13:s13].Value
End Sub

Serge

"Billy" a écrit dans le message de news:

Bonjour,

Dans une feuille, j'ai la macro suivante qui me permet de décaler (ou copier
devrais-je dire) ma ligne 13 une ligne vers le bas.Toutefois, j'essaie de
l'adapter pour copier uniquement les valeurs et non les formules sur cette
ligne plus bas. Étant de niveau débutante, j'éprouve de la difficulté.

Sub ausuivant()

With [a13:S13]
.Copy
.Insert Shift:=xlDown
[a13:S13].SpecialCells(xlCellTypeConstants, 23).ClearContents
End With

End Sub

Merci beaucoup de votre aide!

--
Billy



























1 2 3 4