Copier coller colonne

Bonjour,

j'aimerais copier coller la dernière colonne d'un tableau d'un fichier excel, sur la colonne +1, de ce même tableau et freeze la colonne initial grâce à une macro VBA.

Cependant, j'obtiens le message d'erreur suivant:

image

Cela fait quelques jours que je suis bloquer sans pouvoir avancer..

Merci à vous.

Bonjour,

1. Une petite présentation ICI serait la bienvenue

Si vous ne l'avez pas encore fait, je vous invite à lire :
- La charte du forum
- Quelques fonctionnalités du forum à connaître

Regardez aussi les petites icônes mises à votre disposition dans la barre de menu qui vous permettent
- de poster un code (</>) en le collant votre code dans la fenêtre
- de clôturer un fil lorsque vous avez terminé (V)

2. Mettez votre profil à jour en renseignant votre version Excel (2016, 2019, excel MAC 2011,....). Là "Français" ne veut rien dire et n'aide pas celui qui doit vous répondre

3. Pour votre souci, comment voulez-vous que l'on vous aide avec si peu d'information.
Si ce message vous est renvoyé c'est que avez un problème avec un nom de feuille par exemple.

Cordialement

Bonjour Bawlex, le forum,

image

Cordialement,

Bonjour,

voici ma mission:

j'ai un tableau, dans ce tableau, je dois copier sa derniere colonne ( qui est evolutive ), faire en sorte que cette dernière freeze, pour ensuite, la coller a la colonne +1 ( la colonne qui suit) . Autrement dit, je dois ajouter une colonne en plus et la coller dans cette nouvelle colonne.

J'ai donc essayer un code qui copie colle cette colonne.

1- Pouvez vous me dire s'il manque des choses dans le code suivant, puis possiblement m'aiguiller dans la suite.

2- En compilant, j'obtient une erreure 1004:

image

Sub copier_coller()

    Sheets("feuil1").Select ' selectionner feuille intial
    Range("AA1").Select ' selectionner cellule
    Range(Selection, Selection.End(x1Down)).Select 'selectionner toute la colonne
    Selection.Copy
    Sheets("feuil1").Select 'selectionner feuille finale
    Range("AA2").Select
    ActiveSheet.Paste

End Sub

je ne pense pas pouvoir fournir ce genre de fichier sur des forum cependant voici à quoi ressemble le tableau:

l'objectif étant de copier (les) colonnes "working" (colonne GI et GJ) et les coller en colonne GK et GL.

image

Merci à vous pour votre aide.

Re,

Un essai....à l'aveugle ...

Sub ajout_colonne()
 Dim dercol%, derlig%, tb
  With Sheets("Feuil1") 'nom de la feuille à adapter
   dercol = .UsedRange.Columns.Count
   derlig = .UsedRange.Rows.Count
   tb = .Range(.Cells(4, dercol - 1), .Cells(derlig, dercol)).Value
   .Cells(4, dercol + 1).Resize(UBound(tb), 2) = tb
  End With
End Sub

Seules les valeurs sont copiées...

Cordialement,

Merci beaucoup vraiment pour ton temps,

j'ai maintenant une nouvelle erreur ://

image

re

l'objectif étant de copier (les) colonnes "working" (colonne GI et GJ) et les coller en colonne GK et GL.

cela ne correspond à rien avec votre code là....
là vous copiez AA1 jusque dernière ligne en AA2 sur la même feuille

En fonction de votre objectif décrit ci-dessus, essayez ceci plutôt :

sub copier_coller()
Dim derlig As Integer
With ActiveSheet
    derlig = .UsedRange.Rows.Count
    .Range("GI1:GJ" & derlig).Copy .Range("GK1")
End With
end sub

Si vous avez une erreur cliquez sur "débogage" que l'on puisse sur quelle ligne cela se produit. Là avec votre vue on ne sait rien dire

Crdlt

Re,

Bonjour Dan

j'ai maintenant une nouvelle erreur ://

Faudrait savoir quelle ligne du code pose problème....

Autre essai en se basant sur le nom des colonnes...ce qui revient pratiquement à la proposition de Dan...

Sub ajout_colonne()
 Dim dercol%, derlig%, tb
  With Sheets("Feuil1") 'nom de la feuille à adapter
   derlig = .UsedRange.Rows.Count
   tb = .Range(.Cells(4, "GI"), .Cells(derlig, "GJ")).Value
   .Cells(4, "GK").Resize(UBound(tb), 2) = tb
  End With
End Sub

Cordialement,

je commence par enregistrer le nouveau code, il y a toujours l'apparition de cette fenetre:

image

lorsque je clique sur non je l'enregistre sur le pc.

ensuite je cherche à compiler,

voici ce que j'obtient:

image image

Re,

  • Heu... ta feuille se nomme bien Feuil1?
  • As-tu tester le code de Dan ?

Cordialement,

re,

pour le premier message, c'est normal. Vous avez des macros dans votre fichier qui est au format XLSX. Donc si vous cliquez sur "Enregistrer" cela va vous renvoyer ce message

La première fois, vous devez cliquer sur "Enregistrer Sous" puis choisir le format XLSM

Votre fichier semble être nommé CLASSEUR1.1 ?
Attention à ne jamais mettre de point dans les noms de fichier. Laissez toujours le point pour l'extension !

donc ceci --> Classeur1.xlsm et pas Classeur1.1.xlsm

re,

alors merci à vous deux pour ces conseils très pertinents,

Le code vient enfin de s'executer !!!

seul soucis, les deux colonnes coller, une est correctement recopier, l'autre est gené par un autre tableau qui vient après:

image

question:

pensez vous qu'il est possible, pendant la copie d'ajouter une colonne en plus entre les deux tableaux ( ce qui reviendrait a tout decalé d'une colonne après GK)?

merci encore :))

Re,

seul soucis, les deux colonnes coller, une est correctement recopier, l'autre est gené par un autre tableau qui vient après:

possible, pendant la copie d'ajouter une colonne en plus entre les deux tableaux

A tester:

Sub ajout_colonne()
 Dim dercol%, derlig%, tb
  With Sheets("Feuil1") 'nom de la feuille à adapter
   derlig = .UsedRange.Rows.Count + 4
   tb = .Range(.Cells(4, "GI"), .Cells(derlig, "GJ")).Value
   .Columns("GK:GL").insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
   .Cells(4, "GK").Resize(UBound(tb), 2) = tb
  End With
End Sub

Cordialement,

re,

ça à fonctionner pour ce qui est de décalé ce qui se trouvait à droite du tableau, cependant, 2 soucis persistent:

1- les deux colonnes a coller au bout de tableau on été coller 2 fois après la derniere colonne):

image

2- le texte et valeurs à également été copier sous le tableau:

image

crdlt

Re,

C'est bien pour cela que l'on demande un fichier exemple pour voir comment sont structurées les données, on y gagnerai du temps.

Si ton tableau est fixe en longueur, remplace Derlig par le numéro de la dernière ligne du tableau.

D'après l'image, tes données commencent à la ligne 4, modifie dans le code, dans le cas contraire.

Sub ajout_colonne()
 Dim  derlig%, tb
  With Sheets("Feuil1") 'nom de la feuille à adapter
   derlig = ton n° de ligne
   .Columns("GK:GL").insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
   tb = .Range(.Cells(4, "GI"), .Cells(derlig, "GJ")).Value
   .Cells(4, "GK").Resize(UBound(tb), 2) = tb
  End With
End Sub
1bawlex.xlsm (16.64 Ko)

Cdlt,

re

c'est un tableau qui repertorie les evolutions par mois, autrement dit, le nombre de colonne risque d'augmenter ce qui, je pense, ne sera pas le cas pour les lignes en effet.

Pour ce qui est du fichier test je ne sais pas comment on procède, cependant j'essaye de t'envoyer ça demain matin lorsque j'aurais accès au dossier ( à mon retour au travail).

Une autre question, lorsque l'on utilise la macro, le tableau s'agrandit et la derniere colonne n'est plus la meme (initialement GK:GL puis devient GM:GN etc..) et donc il faut que ce soit la toute derniere qui soit copier coller lors de l'execution de la macro.

merci de ton temps en tout cas.

crdlt

Re

Vous êtes avare d'explications, du coup comment voulez vous que l'on vous donne un code correct. On ne sait pas deviner ce qu'il y a dans votre fichier.

si vous avez des données confidentielles, utilisez cet utilitaire est ici : https://www.excel-pratique.com/fr/utilitaires/anonymisation-donnees

Une autre question, lorsque l'on utilise la macro, le tableau s'agrandit et la derniere colonne n'est plus la meme (initialement GK:GL puis devient GM:GN etc..) et donc il faut que ce soit la toute derniere qui soit copier coller lors de l'execution de la macro

Il faut savoir tout ce que vous avez à droite sur la première ligne de vos tableaux et surtout si votre(vos) tableau(x) à droite comporte toujours le même nombre de colonnes
Donc pour résumer :

- quelle est la première ligne de vos tableaux
- combien de colonnes possède le tableau de droite
- avez-vous plus qu'un tableau à droite de celui qui est concerné par la macro et si oui, quelle est la dernière colonne

attention pas de lignes fusionnées sur votre première ligne !

7classeur1-b.zip (248.86 Ko)

re,

Voici le fichier en question, et oui assez compliqué pour moi d'expliquer , j'espère que ce sera plus simple avec le fichier.

crdlt

Re,

Un essai:

Sub ajout_colonne()
 Dim dercol%, derlig%, tb
  With Sheets("F1")
   'définit la dernière colonne en fonction de la ligne 10
   dercol = .Cells(10, Columns.Count).End(xlToLeft).Column
   'définit la dernière ligne en fonction de la colonne A
   derlig = .Range("A" & Rows.Count).End(xlUp).Row
    'insert 2 colonnes à partir de la dernière colonne +1
    .Columns(dercol + 1).Resize(, 2).Insert
     'définit le tableau de valeur tb (ligne 9 à la dernière,2 dernières colonnes)
     tb = .Range(.Cells(9, dercol - 1), .Cells(derlig, dercol)).Value
     'écrit les données à partir de la dernière colonne +1, ligne 9
    .Cells(9, dercol + 1).Resize(UBound(tb), 2) = tb
  End With
End Sub

Cordialement,

re,

le code ne fonctionne pas,

pb1- il copie colle les données du second tableau mais pas du premier

pb2- toujours une copie des données des dernieres colonnes du premier tableau en dessous de ce tableau

Rechercher des sujets similaires à "copier coller colonne"