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

Macro : un copié-collé sur prochaine colonne vide à droite

15 réponses
Avatar
NoraK
Bonjour à tous !

Le triste moment où mes maigres capacités Excel atteignent leurs limites est arrivé, alors je viens à vous, Experts, dans l'espoir que mon problème soit enfiiiin résolu !

Je vous explique :

Sur un classeur, j'aimerais copier un bout d'une certaine colonne qui ne variera pas (disons la B) de la feuille "Semaine S" pour la coller sur la feuille "Historique" du même classeur, mais à un endroit variable. La première semaine, je remplirai la colonne C par exemple, la deuxième, la colonne D, la troisième, la colonne E... J'aimerais donc coller les données à droite de la dernière colonne pleine afin de constituer un historique qui se remplira avec le temps.

En ajoutant à ça la contrainte du "collage spécial en valeur" pour que mes données restent exactes...

Auriez-vous s'il vous plait une idée d'un code qui me permettrait de créer cette macro ?


Merci :)

10 réponses

1 2
Avatar
MichD
Bonjour,

Désolé, ce que tu as écrit n'est pas assez explicite.

As-tu remarqué que chaque cellule a une adresse?

A ) Quels sont l'adresse et le nom de la feuille de calcul que tu veux
copier?
Exemple : Plage A1:A10 de la feuille "toto"

B ) Où veux-tu copier cette plage de cellules ?
Exemple : La copie se fait sur la feuille "Titi" à partir de la colonne
D26

C ) Si la copie se fait sur une plage variable, explique les conditions que
tu prends en considération pour déterminer où copier les données. Je suppose
qu'à chaque condition correspondent une feuille et une adresse de cellules.

Désolé, mais Excel ce n'est pas un jeu de devinettes... si une réponse
t'intéresse!
Avatar
Jacky
Bonsoir,
...pour la coller sur la feuille "Historique"


"Historique" est un mot réservé par Excel, interdit dans un nom de feuille
Dans l'exemple j'utilise "Les_Historiques"
Ceci copie les valeurs de la plage b2:b30 de la "feuille1" vers la feuille "Les_Historiques" dans la colonne
correspondante au mois en cours selon la date système, a partir de la colonne C
'------------------------------
Sub jj()
Dim LaSemaine As Integer, LaSem As Long
LaSem = DateSerial(Year(Date - Weekday(Date - 1) + 4), 1, 3)
LaSemaine = Int((Date - LaSem + Weekday(LaSem) + 5) / 7)
Sheets("feuil1").[b2:b30].Copy
Sheets("Les_Historiques").Cells(2, LaSemaine + 2).PasteSpecial Paste:=xlPasteValues
End Sub
'------------------------------
Le nom des feuilles et la plage copiée sont à adapter
--
Salutations
JJ


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

Bonjour à tous !

Le triste moment où mes maigres capacités Excel atteignent leurs limites est
arrivé, alors je viens à vous, Experts, dans l'espoir que mon problème soit
enfiiiin résolu !

Je vous explique :

Sur un classeur, j'aimerais copier un bout d'une certaine colonne qui ne variera
pas (disons la B) de la feuille "Semaine S" pour la coller sur la feuille
"Historique" du même classeur, mais à un endroit variable. La première semaine,
je remplirai la colonne C par exemple, la deuxième, la colonne D, la troisième,
la colonne E... J'aimerais donc coller les données à droite de la dernière
colonne pleine afin de constituer un historique qui se remplira avec le temps.

En ajoutant à ça la contrainte du "collage spécial en valeur" pour que mes
données restent exactes...

Auriez-vous s'il vous plait une idée d'un code qui me permettrait de créer cette
macro ?


Merci :)





---
L'absence de virus dans ce courrier electronique a ete verifiee par le logiciel antivirus Avast.
http://www.avast.com
Avatar
Jacquouille
Histor_Hic fonctionne-t-il ?
-))

Jacquouille

" Le vin est au repas ce que le parfum est à la femme."
"Jacky" a écrit dans le message de groupe de discussion :
m6cr53$13i$

Bonsoir,
...pour la coller sur la feuille "Historique"


"Historique" est un mot réservé par Excel, interdit dans un nom de feuille
Dans l'exemple j'utilise "Les_Historiques"
Ceci copie les valeurs de la plage b2:b30 de la "feuille1" vers la feuille
"Les_Historiques" dans la colonne
correspondante au mois en cours selon la date système, a partir de la
colonne C
'------------------------------
Sub jj()
Dim LaSemaine As Integer, LaSem As Long
LaSem = DateSerial(Year(Date - Weekday(Date - 1) + 4), 1, 3)
LaSemaine = Int((Date - LaSem + Weekday(LaSem) + 5) / 7)
Sheets("feuil1").[b2:b30].Copy
Sheets("Les_Historiques").Cells(2, LaSemaine + 2).PasteSpecial
Paste:=xlPasteValues
End Sub
'------------------------------
Le nom des feuilles et la plage copiée sont à adapter
--
Salutations
JJ


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

Bonjour à tous !

Le triste moment où mes maigres capacités Excel atteignent leurs limites
est
arrivé, alors je viens à vous, Experts, dans l'espoir que mon problème
soit
enfiiiin résolu !

Je vous explique :

Sur un classeur, j'aimerais copier un bout d'une certaine colonne qui ne
variera
pas (disons la B) de la feuille "Semaine S" pour la coller sur la feuille
"Historique" du même classeur, mais à un endroit variable. La première
semaine,
je remplirai la colonne C par exemple, la deuxième, la colonne D, la
troisième,
la colonne E... J'aimerais donc coller les données à droite de la
dernière
colonne pleine afin de constituer un historique qui se remplira avec le
temps.

En ajoutant à ça la contrainte du "collage spécial en valeur" pour que mes
données restent exactes...

Auriez-vous s'il vous plait une idée d'un code qui me permettrait de créer
cette
macro ?


Merci :)





---
L'absence de virus dans ce courrier electronique a ete verifiee par le
logiciel antivirus Avast.
http://www.avast.com


---
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast.
http://www.avast.com
Avatar
Jacky
Re...
Si les feuilles "Semaine 1"....."Semaine 2".. etc.. existent
Ceci peut-être
'------------------
Sub jj2()
Dim i As Long
For i = 1 To 53
On Error Resume Next
Sheets("Semaine " & i).[b2:b30].Copy
If Err = 0 Then
With Sheets("Les_Historiques")
.Cells(1, i + 2) = "Semaine " & i
.Cells(2, i + 2).PasteSpecial Paste:=xlPasteValues
End With
On Error GoTo 0
End If
Next
End Sub

'------------------

--
Salutations
JJ


"Jacky" a écrit dans le message de news: m6cr53$13i$
Bonsoir,
...pour la coller sur la feuille "Historique"


"Historique" est un mot réservé par Excel, interdit dans un nom de feuille
Dans l'exemple j'utilise "Les_Historiques"
Ceci copie les valeurs de la plage b2:b30 de la "feuille1" vers la feuille "Les_Historiques" dans la colonne
correspondante au mois en cours selon la date système, a partir de la colonne C
'------------------------------
Sub jj()
Dim LaSemaine As Integer, LaSem As Long
LaSem = DateSerial(Year(Date - Weekday(Date - 1) + 4), 1, 3)
LaSemaine = Int((Date - LaSem + Weekday(LaSem) + 5) / 7)
Sheets("feuil1").[b2:b30].Copy
Sheets("Les_Historiques").Cells(2, LaSemaine + 2).PasteSpecial Paste:=xlPasteValues
End Sub
'------------------------------
Le nom des feuilles et la plage copiée sont à adapter
--
Salutations
JJ


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

Bonjour à tous !

Le triste moment où mes maigres capacités Excel atteignent leurs limites est
arrivé, alors je viens à vous, Experts, dans l'espoir que mon problème soit
enfiiiin résolu !

Je vous explique :

Sur un classeur, j'aimerais copier un bout d'une certaine colonne qui ne variera
pas (disons la B) de la feuille "Semaine S" pour la coller sur la feuille
"Historique" du même classeur, mais à un endroit variable. La première semaine,
je remplirai la colonne C par exemple, la deuxième, la colonne D, la troisième,
la colonne E... J'aimerais donc coller les données à droite de la dernière
colonne pleine afin de constituer un historique qui se remplira avec le temps.

En ajoutant à ça la contrainte du "collage spécial en valeur" pour que mes
données restent exactes...

Auriez-vous s'il vous plait une idée d'un code qui me permettrait de créer cette
macro ?


Merci :)





---
L'absence de virus dans ce courrier electronique a ete verifiee par le logiciel antivirus Avast.
http://www.avast.com

Avatar
norak
Le jeudi 11 Décembre 2014 à 20:06 par MichD :
Bonjour,

Désolé, ce que tu as écrit n'est pas assez explicite.

As-tu remarqué que chaque cellule a une adresse?

A ) Quels sont l'adresse et le nom de la feuille de calcul que tu veux
copier?
Exemple : Plage A1:A10 de la feuille "toto"

B ) Où veux-tu copier cette plage de cellules ?
Exemple : La copie se fait sur la feuille "Titi" à partir de
la colonne
D26

C ) Si la copie se fait sur une plage variable, explique les conditions que
tu prends en considération pour déterminer où copier les
données. Je suppose
qu'à chaque condition correspondent une feuille et une adresse de
cellules.

Désolé, mais Excel ce n'est pas un jeu de devinettes... si une
réponse
t'intéresse!


Bonjour,

Merci pour ta réponse.

Je n'ai pas précisé parce que ça n'avait pas vraiment d'importance, je pensais modifer moi-même le code en fonction de mes besoins en précisant les cellules concernées.

Mais si tu as besoin de plus de précisions:

1) copier cellules B3:B23 de la feuille "toto" (ce sera toujours ces cellules là que je voudrai copier)...

2) ...pour les coller en Valeur sur les cellules B3:B23 de la feuille "titi" dans un premier temps, puis C3:C23 pour la deuxième semaine, D3:D23 pour la troisième... (colonne variable)

3) Il n'y a pas tellement de conditions. C'est toujours la même chose : chaque semaine, je collerai dans certaines feuilles des bases de données (variable d'une semaine à l'autre), qui me permettront de remplir mon tableau de la feuille "toto". Ces infos là doivent être reportées dans une autre feuille, "titi" pour constituer un historique, et ce quelques soient les données trouvées dans le tableau de la feuille "toto".


Merci encore !
Avatar
norak
Le jeudi 11 Décembre 2014 à 20:26 par Jacky :
Bonsoir,
...pour la coller sur la feuille "Historique"



"Historique" est un mot réservé par Excel, interdit
dans un nom de feuille
Dans l'exemple j'utilise "Les_Historiques"
Ceci copie les valeurs de la plage b2:b30 de la "feuille1" vers la
feuille "Les_Historiques" dans la colonne
correspondante au mois en cours selon la date système, a partir de la
colonne C
'------------------------------
Sub jj()
Dim LaSemaine As Integer, LaSem As Long
LaSem = DateSerial(Year(Date - Weekday(Date - 1) + 4), 1, 3)
LaSemaine = Int((Date - LaSem + Weekday(LaSem) + 5) / 7)
Sheets("feuil1").[b2:b30].Copy
Sheets("Les_Historiques").Cells(2, LaSemaine + 2).PasteSpecial
Paste:=xlPasteValues
End Sub
'------------------------------
Le nom des feuilles et la plage copiée sont à adapter
--
Salutations
JJ


"NoraK"

Bonjour à tous !

Le triste moment où mes maigres capacités Excel atteignent leurs
limites est
arrivé, alors je viens à vous, Experts, dans l'espoir que mon
problème soit
enfiiiin résolu !

Je vous explique :

Sur un classeur, j'aimerais copier un bout d'une certaine colonne qui ne
variera
pas (disons la B) de la feuille "Semaine S" pour la coller sur la
feuille
"Historique" du même classeur, mais à un endroit
variable. La première semaine,
je remplirai la colonne C par exemple, la deuxième, la colonne D, la
troisième,
la colonne E... J'aimerais donc coller les données à droite de
la dernière
colonne pleine afin de constituer un historique qui se remplira avec le temps.

En ajoutant à ça la contrainte du "collage spécial
en valeur" pour que mes
données restent exactes...

Auriez-vous s'il vous plait une idée d'un code qui me permettrait de
créer cette
macro ?


Merci :)






---
L'absence de virus dans ce courrier electronique a ete verifiee par le logiciel
antivirus Avast.
http://www.avast.com


Bonsoir,

Merci pour ta réponse.

Heureusement que tu m'informes que je ne peux pas appeler ma feuille "historique" ! :)

Serait-il possible s'il te plait d'avoir ce code, mais sans la notion de semaine/mois ?

J'ai juste précisé que je parlais de semaines pour que vous y voyiez plus clair, mais j'ai peur que ça m'embête plus qu'autre chose qu'Excel copie selon la semaine/mois.

Je préfèrerais que la macro se contente de coller les données de la feuille "Semaine S" dans la prochaine colonne vide qu'il trouve de la feuille "Les_Historiques", à droite de la colonne déjà remplie.


Merci Jacky
Avatar
norak
Le jeudi 11 Décembre 2014 à 22:31 par Jacky :
Re...
Si les feuilles "Semaine 1"....."Semaine 2".. etc..
existent
Ceci peut-être
'------------------
Sub jj2()
Dim i As Long
For i = 1 To 53
On Error Resume Next
Sheets("Semaine " & i).[b2:b30].Copy
If Err = 0 Then
With Sheets("Les_Historiques")
.Cells(1, i + 2) = "Semaine " & i
.Cells(2, i + 2).PasteSpecial Paste:=xlPasteValues
End With
On Error GoTo 0
End If
Next
End Sub

'------------------

--
Salutations
JJ


"Jacky"
Bonsoir,
...pour la coller sur la feuille "Historique"



"Historique" est un mot réservé par Excel, interdit
dans un nom de feuille
Dans l'exemple j'utilise "Les_Historiques"
Ceci copie les valeurs de la plage b2:b30 de la "feuille1" vers la
feuille "Les_Historiques" dans la colonne
correspondante au mois en cours selon la date système, a partir de la
colonne C
'------------------------------
Sub jj()
Dim LaSemaine As Integer, LaSem As Long
LaSem = DateSerial(Year(Date - Weekday(Date - 1) + 4), 1, 3)
LaSemaine = Int((Date - LaSem + Weekday(LaSem) + 5) / 7)
Sheets("feuil1").[b2:b30].Copy
Sheets("Les_Historiques").Cells(2, LaSemaine + 2).PasteSpecial
Paste:=xlPasteValues
End Sub
'------------------------------
Le nom des feuilles et la plage copiée sont à adapter
--
Salutations
JJ


"NoraK"

Bonjour à tous !

Le triste moment où mes maigres capacités Excel atteignent
leurs limites est
arrivé, alors je viens à vous, Experts, dans l'espoir que mon
problème soit
enfiiiin résolu !

Je vous explique :

Sur un classeur, j'aimerais copier un bout d'une certaine colonne qui ne
variera
pas (disons la B) de la feuille "Semaine S" pour la coller sur la
feuille
"Historique" du même classeur, mais à un endroit
variable. La première semaine,
je remplirai la colonne C par exemple, la deuxième, la colonne D, la
troisième,
la colonne E... J'aimerais donc coller les données à droite de
la dernière
colonne pleine afin de constituer un historique qui se remplira avec le
temps.

En ajoutant à ça la contrainte du "collage spécial
en valeur" pour que mes
données restent exactes...

Auriez-vous s'il vous plait une idée d'un code qui me permettrait de
créer cette
macro ?


Merci :)






---
L'absence de virus dans ce courrier electronique a ete verifiee par le
logiciel antivirus Avast.
http://www.avast.com




Les feuilles semaine 1, semaine 2, semaine 3, n'existent pas.

Chaque semaine, je vais écraser les données de la Semaine S (sur feuille "Semaine S") par celles de la Semaine S + 1, mais avant d'écraser les données, il faut que j'aie copié les données de la Semaine S sur une autre feuille ("Les_historiques") pour ne pas les perdre.

Merci !
Avatar
Jacky
Re...
Chaque semaine, je vais écraser les données de la Semaine S (sur feuille
"Semaine S")


'------------------
Sub jj2()
Dim col As Long
col = 3
On Error Resume Next
col = Sheets("Les_Historiques").Cells.Find("*", LookIn:=xlValues, _
SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column + 1
Sheets("Semaine S").[b3:b23].Copy
Sheets("Les_Historiques").Cells(3, col).PasteSpecial Paste:=xlPasteValues
End Sub
'-----------------
--
Salutations
JJ
Avatar
norak
Le vendredi 12 Décembre 2014 à 10:40 par Jacky :
Re...
Chaque semaine, je vais écraser les données de la Semaine S (sur
feuille
"Semaine S")



'------------------
Sub jj2()
Dim col As Long
col = 3
On Error Resume Next
col = Sheets("Les_Historiques").Cells.Find("*",
LookIn:=xlValues, _
SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column + 1
Sheets("Semaine S").[b3:b23].Copy
Sheets("Les_Historiques").Cells(3, col).PasteSpecial
Paste:=xlPasteValues
End Sub
'-----------------
--
Salutations
JJ


Oh, ça marche presque, mais en fait, problème (j'ai oublié de préciser, c'est ma faute désolée !) :

J'ai des données en dessous de l'historique, et donc la colonne se colle certes au niveau des cellules 3 à 23, mais dans la colonne à droite de celle qui contient mes dernières données du dessous.

J'aimerais, étant donné que j'ai des données en dessous de mon tableau historique, que la colonne de Semaine S se colle non pas au niveau de la première colonne ENTIEREMENT vide, mais de la première colonne où au moins les cellules de 3 à 23 sont vides.

Si c'est trop compliqué, c'est pas grave, je peux déplacer mes données du dessous sur une autre feuille au pire, tu m'as déjà énormément aidée, merci beaucoup !
Avatar
Jacky
RE...
......mais de la première colonne où au moins les
cellules de 3 à 23 sont vides.



'-----------------------
Sub jj2()
Dim col As Long
Sheets("Semaine S").[b3:b23].Copy
col = 1
With Sheets("Les_Historiques")
On Error Resume Next
With .Range("c3", .Cells(23, .Columns.Count))
col = .Find("*", LookIn:=xlValues, _
SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column - 1
.Cells(1, col).PasteSpecial Paste:=xlPasteValues
End With
End With
End Sub
'----------------------------

--
Salutations
JJ
1 2