J'ai essayé de me créer une petite macro avec l'enregistreur pour insérer
des colonnes ou je le souhaite, mais ça ne fonctionne pas comme je voudrais.
De A1 à A160, j'ai une colonne 'type' qui est masquée dans ma feuille, et je
veux la copier, pour aller l'insérer ou je veux dans mon tableau; et qu'elle
s'insère à droite de la colonne dans laquelle se trouve la cellule active,
sans tenir compte de la position de la cellule active dans cette colonne.
Par exemple, avant de lancer la macro associée à un bouton, je me positionne
dans une des cellules de la colonne par rapport à laquelle je souhaite
insérer ma nouvelle colonne, puis je lance la macro :
1 - Elle copie la colonne type de A1 à A160
2 - Elle la colle en l'insérant à droite de la cellule active, sans tenir
compte du positionnement de la cellule active (que je me positionne en P1 ou
en P46, la colonne copiée sera toujours insérée à droite, mais comme si je
cliquais sur l'en-tête de la colonne pour insérer).
J'espère que j'ai été assez clair...
Merci!
--
géjoun
dam-mail2006@ifrance.com
/Enlever l''année pour m''écrire.../
En fait, je suis arrivé à faire ça par rapport à une macro qu'on m'avait donné ici il y a quelques temps, qui servait à la même chose, mais pour des lignes, donc j'ai essayé de l'adapter à des colonnes, mais ça bloque sur la ligne que je repère ci-dessous :
Sub Macro1() x = ActiveCell.Columns Range("A1:A160").Copy Range("A" & x).Insert Shift:=xlToRight <<< Ca bloque ici (ci on pouvait m'expliquer le "A"&x aussi...) Application.CutCopyMode = False Columns(x).ColumnWidth = 5 End Sub
Merci!
-- géjoun
/Enlever l''année pour m''écrire.../
En fait, je suis arrivé à faire ça par rapport à une macro qu'on m'avait
donné ici il y a quelques temps, qui servait à la même chose, mais pour des
lignes, donc j'ai essayé de l'adapter à des colonnes, mais ça bloque sur la
ligne que je repère ci-dessous :
Sub Macro1()
x = ActiveCell.Columns
Range("A1:A160").Copy
Range("A" & x).Insert Shift:=xlToRight <<< Ca bloque ici (ci on pouvait
m'expliquer le "A"&x aussi...)
Application.CutCopyMode = False
Columns(x).ColumnWidth = 5
End Sub
Merci!
--
géjoun
dam-mail2006@ifrance.com
/Enlever l''année pour m''écrire.../
En fait, je suis arrivé à faire ça par rapport à une macro qu'on m'avait donné ici il y a quelques temps, qui servait à la même chose, mais pour des lignes, donc j'ai essayé de l'adapter à des colonnes, mais ça bloque sur la ligne que je repère ci-dessous :
Sub Macro1() x = ActiveCell.Columns Range("A1:A160").Copy Range("A" & x).Insert Shift:=xlToRight <<< Ca bloque ici (ci on pouvait m'expliquer le "A"&x aussi...) Application.CutCopyMode = False Columns(x).ColumnWidth = 5 End Sub
Merci!
-- géjoun
/Enlever l''année pour m''écrire.../
Eric Mermin
il faut déclarer ta variable x peut être aussi remplacer "columns" par "column" en fait , en écrivant "A" & x, tu essaies de concaténer deux chaines pour donner par exemple A4 si t'as cellule active est dans la colonne D eric vraiment non specialiste t'inquietes, ya des bons qui vont venir te sauver
En fait, je suis arrivé à faire ça par rapport à une macro qu'on m'avait donné ici il y a quelques temps, qui servait à la même chose, mais pour des lignes, donc j'ai essayé de l'adapter à des colonnes, mais ça bloque sur la ligne que je repère ci-dessous :
Sub Macro1() x = ActiveCell.Columns Range("A1:A160").Copy Range("A" & x).Insert Shift:=xlToRight <<< Ca bloque ici (ci on pouvait m'expliquer le "A"&x aussi...) Application.CutCopyMode = False Columns(x).ColumnWidth = 5 End Sub
Merci!
il faut déclarer ta variable x
peut être aussi remplacer "columns" par "column"
en fait , en écrivant "A" & x, tu essaies de concaténer deux chaines
pour donner par exemple A4 si t'as cellule active est dans la colonne D
eric vraiment non specialiste
t'inquietes, ya des bons qui vont venir te sauver
En fait, je suis arrivé à faire ça par rapport à une macro qu'on m'avait
donné ici il y a quelques temps, qui servait à la même chose, mais pour des
lignes, donc j'ai essayé de l'adapter à des colonnes, mais ça bloque sur la
ligne que je repère ci-dessous :
Sub Macro1()
x = ActiveCell.Columns
Range("A1:A160").Copy
Range("A" & x).Insert Shift:=xlToRight <<< Ca bloque ici (ci on pouvait
m'expliquer le "A"&x aussi...)
Application.CutCopyMode = False
Columns(x).ColumnWidth = 5
End Sub
il faut déclarer ta variable x peut être aussi remplacer "columns" par "column" en fait , en écrivant "A" & x, tu essaies de concaténer deux chaines pour donner par exemple A4 si t'as cellule active est dans la colonne D eric vraiment non specialiste t'inquietes, ya des bons qui vont venir te sauver
En fait, je suis arrivé à faire ça par rapport à une macro qu'on m'avait donné ici il y a quelques temps, qui servait à la même chose, mais pour des lignes, donc j'ai essayé de l'adapter à des colonnes, mais ça bloque sur la ligne que je repère ci-dessous :
Sub Macro1() x = ActiveCell.Columns Range("A1:A160").Copy Range("A" & x).Insert Shift:=xlToRight <<< Ca bloque ici (ci on pouvait m'expliquer le "A"&x aussi...) Application.CutCopyMode = False Columns(x).ColumnWidth = 5 End Sub
Merci!
Ardus Petus
x = ActiveCell.Column (sans s à Column)
Cordialement, -- AP
"géjoun" a écrit dans le message de news:
En fait, je suis arrivé à faire ça par rapport à une macro qu'on m'avait donné ici il y a quelques temps, qui servait à la même chose, mais pour des
lignes, donc j'ai essayé de l'adapter à des colonnes, mais ça bloque sur la
ligne que je repère ci-dessous :
Sub Macro1() x = ActiveCell.Columns Range("A1:A160").Copy Range("A" & x).Insert Shift:=xlToRight <<< Ca bloque ici (ci on pouvait m'expliquer le "A"&x aussi...) Application.CutCopyMode = False Columns(x).ColumnWidth = 5 End Sub
Merci!
-- géjoun
/Enlever l''année pour m''écrire.../
x = ActiveCell.Column (sans s à Column)
Cordialement,
--
AP
"géjoun" <dam-mail2006@ifrance.com> a écrit dans le message de
news:0C6AB879-53E6-49D4-8E8A-C53E08E9C195@microsoft.com...
En fait, je suis arrivé à faire ça par rapport à une macro qu'on m'avait
donné ici il y a quelques temps, qui servait à la même chose, mais pour
des
lignes, donc j'ai essayé de l'adapter à des colonnes, mais ça bloque sur
la
ligne que je repère ci-dessous :
Sub Macro1()
x = ActiveCell.Columns
Range("A1:A160").Copy
Range("A" & x).Insert Shift:=xlToRight <<< Ca bloque ici (ci on pouvait
m'expliquer le "A"&x aussi...)
Application.CutCopyMode = False
Columns(x).ColumnWidth = 5
End Sub
Merci!
--
géjoun
dam-mail2006@ifrance.com
/Enlever l''année pour m''écrire.../
En fait, je suis arrivé à faire ça par rapport à une macro qu'on m'avait donné ici il y a quelques temps, qui servait à la même chose, mais pour des
lignes, donc j'ai essayé de l'adapter à des colonnes, mais ça bloque sur la
ligne que je repère ci-dessous :
Sub Macro1() x = ActiveCell.Columns Range("A1:A160").Copy Range("A" & x).Insert Shift:=xlToRight <<< Ca bloque ici (ci on pouvait m'expliquer le "A"&x aussi...) Application.CutCopyMode = False Columns(x).ColumnWidth = 5 End Sub
Merci!
-- géjoun
/Enlever l''année pour m''écrire.../
géjoun
Ardus Petus nous expliquait:
x = ActiveCell.Column (sans s à Column)
Bonsoir,
J'ai essayé dans la journée, mais ça ne fonctionne pas mieux pour autant... Personne n'a une d'idée du code à employer? Ou j'ai mal expliqué ce que je souhaitais?
Merci! -- géjoun
/Enlever l'année pour répondre.../
Ardus Petus <ardus.petus@laposte.net> nous expliquait:
x = ActiveCell.Column (sans s à Column)
Bonsoir,
J'ai essayé dans la journée, mais ça ne fonctionne pas mieux pour autant...
Personne n'a une d'idée du code à employer? Ou j'ai mal expliqué ce que je
souhaitais?
Merci!
--
géjoun
dam-mail2006@ifrance.com
/Enlever l'année pour répondre.../
J'ai essayé dans la journée, mais ça ne fonctionne pas mieux pour autant... Personne n'a une d'idée du code à employer? Ou j'ai mal expliqué ce que je souhaitais?
Merci! -- géjoun
/Enlever l'année pour répondre.../
JpPradier
Bonsoir géjoun
Essaye comme ça :
Sub Macro1() x = ActiveCell.Column Range("A1:A160").Copy Cells(1, x).Insert Shift:=xlToRight Application.CutCopyMode = False Columns(x).ColumnWidth = 5 End Sub
j-p
Bonsoir géjoun
Essaye comme ça :
Sub Macro1()
x = ActiveCell.Column
Range("A1:A160").Copy
Cells(1, x).Insert Shift:=xlToRight
Application.CutCopyMode = False
Columns(x).ColumnWidth = 5
End Sub
Sub Macro1() x = ActiveCell.Column Range("A1:A160").Copy Cells(1, x).Insert Shift:=xlToRight Application.CutCopyMode = False Columns(x).ColumnWidth = 5 End Sub
j-p
géjoun
Bonjour Jp,
Justement, c'était toi qui m'avait donné il y a un moment de ça la macro que j'ai repris et essayé d'adapter.
Par rapport au code que tu m'as donné, je l'ai légèrement modifié car ça ne fonctionnait pas comme je voulais exactement en insérant juste une plage, il faut insérer à chaque fois toute la colonne, donc voici ce que ça donne :
Sub Macro1() x = ActiveCell.Column Range("A:A").Copy Cells(1, x).Insert Shift:=xlToRight Application.CutCopyMode = False Columns(x).ColumnWidth = 10 End Sub
Là, ça fonctionne, mais ça ne donne pas ce que je pensais.
Déja, au niveau de la macro, est-ce que c'est pas plus 'contraignant' de copier toute une colonne alors qu'une simple plage suffirait?
Ensuite, j'ai essayé de changer "Range("A:A").Copy" par "Columns("A:A").Copy"; et les deux fonctionnent. Est-ce qu'il y en a un plus que l'autre à employer? Est-ce qu'on emploie forcément Columns lors d'une colonne, ou on peut quand même employer Range ?
Ensuite, j'ai essayé de modifier "Cells(1, x).Insert Shift:=xlToRight" en changeant le "toRight" par "ToLeft", mais j'obtiens toujours pas ce que je souhaite.
Pour être plus simple dans mes explications, dans le fichier ci-joint http://cjoint.com/?efmyW2iCzd , lorsque je me positionne dans la colonne C, et que j'exécute la macro, je voudrais que la colonne insérée se retrouve en D (que ça me l'insère aprés le chiffre 1, et non avant de façon à ne pas avoir à ensuite fusionner la cellule C2 et D2 pour obtenir une seule grande cellule); et lorsque je me positionne dans la colonne I, j'exécute la macro, et la colonne insérée se retrouve en J et non en I, et ne me décale pas le chiffre 7 de sa position initiale.
Et là, j'arrive pas à voir de solutions, parce qu'autant pour la colonne C, ça revient à insérer une colonne juste aprés, puis copier-coller la colonne A sur la colonne vierge insérée, mais pour la I, je vois pas comment faire.
Y a t'il une solution?
Merci!
-- géjoun
/Enlever l''année pour m''écrire.../
Bonsoir géjoun
Essaye comme ça :
Sub Macro1() x = ActiveCell.Column Range("A1:A160").Copy Cells(1, x).Insert Shift:=xlToRight Application.CutCopyMode = False Columns(x).ColumnWidth = 5 End Sub
j-p
Bonjour Jp,
Justement, c'était toi qui m'avait donné il y a un moment de ça la macro que
j'ai repris et essayé d'adapter.
Par rapport au code que tu m'as donné, je l'ai légèrement modifié car ça ne
fonctionnait pas comme je voulais exactement en insérant juste une plage, il
faut insérer à chaque fois toute la colonne, donc voici ce que ça donne :
Sub Macro1()
x = ActiveCell.Column
Range("A:A").Copy
Cells(1, x).Insert Shift:=xlToRight
Application.CutCopyMode = False
Columns(x).ColumnWidth = 10
End Sub
Là, ça fonctionne, mais ça ne donne pas ce que je pensais.
Déja, au niveau de la macro, est-ce que c'est pas plus 'contraignant' de
copier toute une colonne alors qu'une simple plage suffirait?
Ensuite, j'ai essayé de changer "Range("A:A").Copy" par
"Columns("A:A").Copy"; et les deux fonctionnent. Est-ce qu'il y en a un plus
que l'autre à employer?
Est-ce qu'on emploie forcément Columns lors d'une colonne, ou on peut quand
même employer Range ?
Ensuite, j'ai essayé de modifier "Cells(1, x).Insert Shift:=xlToRight" en
changeant le "toRight" par "ToLeft", mais j'obtiens toujours pas ce que je
souhaite.
Pour être plus simple dans mes explications, dans le fichier ci-joint
http://cjoint.com/?efmyW2iCzd , lorsque je me positionne dans la colonne C,
et que j'exécute la macro, je voudrais que la colonne insérée se retrouve en
D (que ça me l'insère aprés le chiffre 1, et non avant de façon à ne pas
avoir à ensuite fusionner la cellule C2 et D2 pour obtenir une seule grande
cellule); et lorsque je me positionne dans la colonne I, j'exécute la macro,
et la colonne insérée se retrouve en J et non en I, et ne me décale pas le
chiffre 7 de sa position initiale.
Et là, j'arrive pas à voir de solutions, parce qu'autant pour la colonne C,
ça revient à insérer une colonne juste aprés, puis copier-coller la colonne A
sur la colonne vierge insérée, mais pour la I, je vois pas comment faire.
Y a t'il une solution?
Merci!
--
géjoun
dam-mail2006@ifrance.com
/Enlever l''année pour m''écrire.../
Bonsoir géjoun
Essaye comme ça :
Sub Macro1()
x = ActiveCell.Column
Range("A1:A160").Copy
Cells(1, x).Insert Shift:=xlToRight
Application.CutCopyMode = False
Columns(x).ColumnWidth = 5
End Sub
Justement, c'était toi qui m'avait donné il y a un moment de ça la macro que j'ai repris et essayé d'adapter.
Par rapport au code que tu m'as donné, je l'ai légèrement modifié car ça ne fonctionnait pas comme je voulais exactement en insérant juste une plage, il faut insérer à chaque fois toute la colonne, donc voici ce que ça donne :
Sub Macro1() x = ActiveCell.Column Range("A:A").Copy Cells(1, x).Insert Shift:=xlToRight Application.CutCopyMode = False Columns(x).ColumnWidth = 10 End Sub
Là, ça fonctionne, mais ça ne donne pas ce que je pensais.
Déja, au niveau de la macro, est-ce que c'est pas plus 'contraignant' de copier toute une colonne alors qu'une simple plage suffirait?
Ensuite, j'ai essayé de changer "Range("A:A").Copy" par "Columns("A:A").Copy"; et les deux fonctionnent. Est-ce qu'il y en a un plus que l'autre à employer? Est-ce qu'on emploie forcément Columns lors d'une colonne, ou on peut quand même employer Range ?
Ensuite, j'ai essayé de modifier "Cells(1, x).Insert Shift:=xlToRight" en changeant le "toRight" par "ToLeft", mais j'obtiens toujours pas ce que je souhaite.
Pour être plus simple dans mes explications, dans le fichier ci-joint http://cjoint.com/?efmyW2iCzd , lorsque je me positionne dans la colonne C, et que j'exécute la macro, je voudrais que la colonne insérée se retrouve en D (que ça me l'insère aprés le chiffre 1, et non avant de façon à ne pas avoir à ensuite fusionner la cellule C2 et D2 pour obtenir une seule grande cellule); et lorsque je me positionne dans la colonne I, j'exécute la macro, et la colonne insérée se retrouve en J et non en I, et ne me décale pas le chiffre 7 de sa position initiale.
Et là, j'arrive pas à voir de solutions, parce qu'autant pour la colonne C, ça revient à insérer une colonne juste aprés, puis copier-coller la colonne A sur la colonne vierge insérée, mais pour la I, je vois pas comment faire.
Y a t'il une solution?
Merci!
-- géjoun
/Enlever l''année pour m''écrire.../
Bonsoir géjoun
Essaye comme ça :
Sub Macro1() x = ActiveCell.Column Range("A1:A160").Copy Cells(1, x).Insert Shift:=xlToRight Application.CutCopyMode = False Columns(x).ColumnWidth = 5 End Sub
j-p
JpPradier
Bonjour géjoun
Pour la différence entre "Range("A:A").Copy" et "Columns("A:A").Copy", c'est kif-kif la bourrique à mon avis. L'avantage de Columns est d'etre plus clair à la relecture. Pour la macro que je t'ai donné, si j'ai compris, elle fonctionne bien mais elle n'insere pas la plage du bon coté de la colonne selectionnée ?
j-p
Bonjour géjoun
Pour la différence entre "Range("A:A").Copy" et "Columns("A:A").Copy", c'est kif-kif la
bourrique à mon avis. L'avantage de Columns est d'etre plus clair à la relecture.
Pour la macro que je t'ai donné, si j'ai compris, elle fonctionne bien mais elle n'insere
pas la plage du bon coté de la colonne selectionnée ?
Pour la différence entre "Range("A:A").Copy" et "Columns("A:A").Copy", c'est kif-kif la bourrique à mon avis. L'avantage de Columns est d'etre plus clair à la relecture. Pour la macro que je t'ai donné, si j'ai compris, elle fonctionne bien mais elle n'insere pas la plage du bon coté de la colonne selectionnée ?
j-p
géjoun
Re,
Pour la différence entre Columns et Range, j'ai compris, et pour ma macro, en fait, c'est bien qu'elle n'insère pas du bon coté, mais aussi qu'une fois la colonne C insérée, je me retrouve avec une cellule en C2 qui n'est plus fusionnée avec les autres (la feuille 2 sur le fichier joint); et pour la colonne D, une fois insérée, le chiffre 2 se décale vers la droite au lieu de rester à sa place initiale (mais ça, effectivement, c'est juste que la colonne s'insère du mauvais côté).
J'espère avoir été plus clair...
Le fichier d'exemple : http://cjoint.com/?efoPlH7IuY
Merci! ;-) -- géjoun
/Enlever l''année pour m''écrire.../
Bonjour géjoun
Pour la différence entre "Range("A:A").Copy" et "Columns("A:A").Copy", c'est kif-kif la bourrique à mon avis. L'avantage de Columns est d'etre plus clair à la relecture. Pour la macro que je t'ai donné, si j'ai compris, elle fonctionne bien mais elle n'insere pas la plage du bon coté de la colonne selectionnée ?
j-p
Re,
Pour la différence entre Columns et Range, j'ai compris, et pour ma macro,
en fait, c'est bien qu'elle n'insère pas du bon coté, mais aussi qu'une fois
la colonne C insérée, je me retrouve avec une cellule en C2 qui n'est plus
fusionnée avec les autres (la feuille 2 sur le fichier joint); et pour la
colonne D, une fois insérée, le chiffre 2 se décale vers la droite au lieu de
rester à sa place initiale (mais ça, effectivement, c'est juste que la
colonne s'insère du mauvais côté).
J'espère avoir été plus clair...
Le fichier d'exemple : http://cjoint.com/?efoPlH7IuY
Merci! ;-)
--
géjoun
dam-mail2006@ifrance.com
/Enlever l''année pour m''écrire.../
Bonjour géjoun
Pour la différence entre "Range("A:A").Copy" et "Columns("A:A").Copy", c'est kif-kif la
bourrique à mon avis. L'avantage de Columns est d'etre plus clair à la relecture.
Pour la macro que je t'ai donné, si j'ai compris, elle fonctionne bien mais elle n'insere
pas la plage du bon coté de la colonne selectionnée ?
Pour la différence entre Columns et Range, j'ai compris, et pour ma macro, en fait, c'est bien qu'elle n'insère pas du bon coté, mais aussi qu'une fois la colonne C insérée, je me retrouve avec une cellule en C2 qui n'est plus fusionnée avec les autres (la feuille 2 sur le fichier joint); et pour la colonne D, une fois insérée, le chiffre 2 se décale vers la droite au lieu de rester à sa place initiale (mais ça, effectivement, c'est juste que la colonne s'insère du mauvais côté).
J'espère avoir été plus clair...
Le fichier d'exemple : http://cjoint.com/?efoPlH7IuY
Merci! ;-) -- géjoun
/Enlever l''année pour m''écrire.../
Bonjour géjoun
Pour la différence entre "Range("A:A").Copy" et "Columns("A:A").Copy", c'est kif-kif la bourrique à mon avis. L'avantage de Columns est d'etre plus clair à la relecture. Pour la macro que je t'ai donné, si j'ai compris, elle fonctionne bien mais elle n'insere pas la plage du bon coté de la colonne selectionnée ?
j-p
JpPradier
Ok, vu le problème : Pour le contourner, remplace : Cells(1, x).Insert Shift:=xlToRight par : Cells(1, x+1).Insert Shift:=xlToRight Mais ça ne marchera que quand tu insères au milieu des 2 cellules fusionnées (entre C et D de la feuille de départ) et pas entre D et E.
j-p
Ok, vu le problème :
Pour le contourner, remplace :
Cells(1, x).Insert Shift:=xlToRight
par :
Cells(1, x+1).Insert Shift:=xlToRight
Mais ça ne marchera que quand tu insères au milieu des 2 cellules fusionnées (entre C et D
de la feuille de départ) et pas entre D et E.
Ok, vu le problème : Pour le contourner, remplace : Cells(1, x).Insert Shift:=xlToRight par : Cells(1, x+1).Insert Shift:=xlToRight Mais ça ne marchera que quand tu insères au milieu des 2 cellules fusionnées (entre C et D de la feuille de départ) et pas entre D et E.
j-p
géjoun
Bonjour,
Bon, ça marche mieux comme ça pour la colone du début :-) . Et pour la colonne de fin (la D), ce n'est tout simplement pas possible d'éviter le décalage du chiffre, et que la colonne s'insère quand même sur la droite?, ou ce n'est pas possible avec la même macro? car dans ce cas, je pourrais créer 2 boutons dans ma feuille, 1 pour insérer du côté gauche, et un pour le côté droit.
-- géjoun
/Enlever l''année pour m''écrire.../
Ok, vu le problème : Pour le contourner, remplace : Cells(1, x).Insert Shift:=xlToRight par : Cells(1, x+1).Insert Shift:=xlToRight Mais ça ne marchera que quand tu insères au milieu des 2 cellules fusionnées (entre C et D de la feuille de départ) et pas entre D et E.
j-p
Bonjour,
Bon, ça marche mieux comme ça pour la colone du début :-) .
Et pour la colonne de fin (la D), ce n'est tout simplement pas possible
d'éviter le décalage du chiffre, et que la colonne s'insère quand même sur la
droite?, ou ce n'est pas possible avec la même macro? car dans ce cas, je
pourrais créer 2 boutons dans ma feuille, 1 pour insérer du côté gauche, et
un pour le côté droit.
--
géjoun
dam-mail2006@ifrance.com
/Enlever l''année pour m''écrire.../
Ok, vu le problème :
Pour le contourner, remplace :
Cells(1, x).Insert Shift:=xlToRight
par :
Cells(1, x+1).Insert Shift:=xlToRight
Mais ça ne marchera que quand tu insères au milieu des 2 cellules fusionnées (entre C et D
de la feuille de départ) et pas entre D et E.
Bon, ça marche mieux comme ça pour la colone du début :-) . Et pour la colonne de fin (la D), ce n'est tout simplement pas possible d'éviter le décalage du chiffre, et que la colonne s'insère quand même sur la droite?, ou ce n'est pas possible avec la même macro? car dans ce cas, je pourrais créer 2 boutons dans ma feuille, 1 pour insérer du côté gauche, et un pour le côté droit.
-- géjoun
/Enlever l''année pour m''écrire.../
Ok, vu le problème : Pour le contourner, remplace : Cells(1, x).Insert Shift:=xlToRight par : Cells(1, x+1).Insert Shift:=xlToRight Mais ça ne marchera que quand tu insères au milieu des 2 cellules fusionnées (entre C et D de la feuille de départ) et pas entre D et E.