Copier coller colonne

Bonjour,

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

Et si vous répondiez déjà à ce que je vous ai demandé ?

Puis dans votre fichier posté, quelles sont les colonnes à copier vers la droite ? GS GT ?
Si oui vous les copiez avant la colonne pts ?

Bonjour à tous,

Autre tentative....

4classeur1-b.zip (257.38 Ko)

Cordialement,

Re, je suppose que la macro detecte comme derniere colonne celle du second tableau car après vérification il ne copie colle absolument pas les deux dernieres colonnes du premier tableau mais uniquement celle du deuxieme

re

ok pas de réponse donc je vous laisse continuer avec xorsankukai

A+

re,

en effet je crois que ton dernier code est bon, en tout cas très très proche de ce que je recherchais initialement, merci beaucoup à toi.

je reviens vers vous rapidement pour vous confirmer que c'est fonctionnel dans le long termes

encore merci pour votre temps

Dan,

Je pensais que t'allais avoir réponse à toute tes qst avec le fichier que j'ai envoyer, je ne vois pas à quoi il faut que je te répondre d'autre, je pense avoir répondu à tout, si ce n'est pas le cas navré mais si tu peux me préciser quelles réponse tu attends je veux bien.

re

Hum si vous ne lisez par ce que je vous écrit ...
C'était ici -- >https://forum.excel-pratique.com/s/goto/1112377 et ici https://forum.excel-pratique.com/s/goto/1112428

Mais bon laissez tomber, cela ne sert à rien que je regarde si Xorsankukai vous a donné la solution qui vous convient
Pensez à -->

Crdlt

Re,

ça l'air de fonctionner très bien en tout cas merci a vous deux c'est cool et a bientot.

crdlt

Re,

ça l'air de fonctionner

  • La prochaine fois, pense à joindre un fichier dès le départ, en expliquant clairement le résultat à atteindre, on aurait gagné du temps,
  • Les questions de Dan étaient très pertinentes mais sont restées sans réponse, c'est toujours frustrant pour un intervenant, sachant que tout le monde est bénévole et prend sur son temps pour faire vivre ce forum.

Merci d'avoir passé le sujet en résolu.

Bonne continuation,

Salut tout le monde,

tout d'abord très bonne année a vous, j'espère que vous avez passé de bonne fête.

J'ai un petit soucis quand je transfert le code sur le fichier original, il à un tableau en plus ce qui dérègle le code ( copie colle la dernière colonne -3 du mauvais tableau ).

Est-il possible de corrigé ceci? (j'ai essayé en modifiant colonne -3 par colonne -X et le resultat n'est pas propre)

Existe-il une façon de coder en cherchant la colonne "working" sur la ligne 9?

je joints également le code qui fonctionnait.

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 - 3
   '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

merci à vous!!

PS: je n'arrive pas a vous joindre le document, car il est trop lourd, avez vous un mail peut etre?

Bonsoir à tous,

Nouvel essai....

Sub ajout_colonneV3()
 Dim dercol%, derlig%, dc%, i%

  With Sheets("F1")
  'définit la dernière colonne
   dc = .UsedRange.Columns.Count

   Application.ScreenUpdating = False
    'boucle de la dernière colonne à la première
    For i = dc To 1 Step -1
     'si en ligne 9, la cellule=working
     If .Cells(9, i).Value Like "working" Then
     'définit la colonne dercol
      dercol = i + 1
     'définit la dernière ligne en fonction de la colonne "working"
      derlig = .Cells(Rows.Count, dercol - 1).End(xlUp).Row
     'quitte la boucle
      Exit For
     End If
    Next i

    'insert 2 colonnes à partir de la dercol +1
    .Columns(dercol + 1).Resize(, 2).Insert
    'copie les valeurs (ligne 9 à la dernière,2 dernières colonnes)
    .Range(.Cells(9, dercol - 1), .Cells(derlig, dercol)).Copy
    'colle les valeurs des données à partir de la dernière colonne +1, ligne 9
    .Cells(9, dercol + 1).PasteSpecial Paste:=xlPasteValues
    'colle le format des données à partir de la dernière colonne +1, ligne 9
    .Cells(9, dercol + 1).PasteSpecial Paste:=xlPasteFormats
   'supprime la sélection de cellules
   Application.CutCopyMode = False
  End With
End Sub

Cordialement,

Salut,

merci pour ta réactivité,

1- je viens d'essayer ton code et malheureusement il compile pas :

image

2- finalement le résultat attendu est un copier coller de la derniere colonne "working" non pas en fin de tableau mais entre l'avant derniere et la colonne working, ce qui donnerait ( colonne x; colonne x; copy working; working) , j'ai ma petite idée sur ce point je suppose qu'il faut juste passé le "derniere colonne +1" en "derniere colonne -1"

merci à toi

Bonjour,

En attendant le retour de Xorsankukai qui s'occupe de votre souci, si cela ne compile pas c'est que vous avez un souci avec les variables "d'ergol" ou "derlig" qui ne sont pas définies.
Donc le problème est à vérifier avant la ligne coloriée en jaune

Si vous passez votre souris sur ces variables, vous devriez voir leur valeur

Vérifiez aussi que le mot "working" est bien écrit dans votre cellule en minuscule et sans espaces devant ou derrière

Crdlt

bonjour dan,

merci pour tes conseils je regarde cela tout de suite.

avez vous une solution pour que je vous partage mon fichier malgré qu'il soit trop lourd?

crdlt

Bonsoir à tous,

le résultat attendu est un copier coller de la derniere colonne "working" non pas en fin de tableau mais entre l'avant derniere et la colonne working

On est bien d'accord que la colonne "working" contient 2 colonnes, de même que celle qui la précède.

Sub ajout_colonneV3()
 Dim dercol%, derlig%, dc%, i%

  With Sheets("F1")
  'définit la dernière colonne
   dc = .UsedRange.Columns.Count

   Application.ScreenUpdating = False
    'boucle de la dernière colonne à la première
    For i = dc To 1 Step -1
     'si en ligne 9, la cellule=working
     If .Cells(9, i).Value Like "working" Then
     'définit la colonne dercol
      dercol = i ': MsgBox dercol
     'définit la dernière ligne en fonction de la colonne "working"
      derlig = .Cells(Rows.Count, dercol).End(xlUp).Row ': MsgBox derlig
     'quitte la boucle
      Exit For
     End If
    Next i

    'insert 2 colonnes à partir de la dercol
    .Columns(dercol).Resize(, 2).Insert
    'copie les valeurs des 2  colonnes de working
    .Range(.Cells(9, dercol + 2), .Cells(derlig, dercol + 3)).Copy
    'colle les valeurs des données à partir de dercol, ligne 9 (soit 2 colonnes avant working)
    .Cells(9, dercol).PasteSpecial Paste:=xlPasteValues
    'colle le format des données
    .Cells(9, dercol).PasteSpecial Paste:=xlPasteFormats
   'supprime la sélection de cellules
   Application.CutCopyMode = False
  End With
End Sub
5bawlex.zip (262.15 Ko)

Cordialement,

Re,

exactement voici à quoi ressemble la fin du tableau:

image

je viens de tester votre code et j'ai toujours l'erreur 1004 qui bloque la compilation du code:

image

je viens de tester votre code et j'ai toujours l'erreur 1004 qui bloque la compilation du code:

1.On revient à la question que je vous ai déjà posée hier (https://forum.excel-pratique.com/s/goto/1114317) et à laquelle vous ne répondez pas., à savoir la valeur de la variable (ici dercol).

2. Le "working" est une cellule fusionnée ? si oui, très mauvais cela en VBA

re,

-je pensais que t'avais eu ta reponse avec le screen du code complet, "dim dercol" ne sert pas à déclarer la variable dercol?

-oui c'est une cellule fusionnée, Et je ne peux pas changé cela

-je pensais que t'avais eu ta reponse avec le screen du code complet, "dim dercol" ne sert pas à déclarer la variable dercol?

Comment vous voulez que nous sachions la valeur dercol avec un screen ????
Ce n'est pas du dim que l'on parle mais de dercol dans la ligne coloriée en jaune

-oui c'est une cellule fusionnée, Et je ne peux pas changé cela

Si vous pouvez changer.
- Sélectionnez la cellule avec "working"
- Défusionnez
- cliquez sur l'icone "Format" et allez dans "format de cellule"
- dans l'onglet Alignement, sélectionnez "Horizontal"
- Choisissez "Centré sur plusieurs colonnes"

Voici le code :

Sub ajout_colonne()
 Dim dercol%, derlig%, dc%, i%

  With Sheets("Bridge_CAA_IAR")
  'définit la dernière colonne
   dc = .UsedRange.Columns.Count

   Application.ScreenUpdating = False
    'boucle de la dernière colonne à la première
    For i = dc To 1 Step -1
     'si en ligne 9, la cellule=working
     If .Cells(9, i).Value Like "Working" Then
     'définit la colonne dercol
      dercol = i ': MsgBox dercol
     'définit la dernière ligne en fonction de la colonne "working"
      derlig = .Cells(Rows.Count, dercol).End(xlUp).Row ': MsgBox derlig
     'quitte la boucle
      Exit For
     End If
    Next i

    'insert 2 colonnes à partir de la dercol
    .Columns(dercol).Resize(, 2).Insert
    'copie les valeurs des 2  colonnes de working
    .Range(.Cells(9, dercol + 2), .Cells(derlig, dercol + 3)).Copy
    'colle les valeurs des données à partir de dercol, ligne 9 (soit 2 colonnes avant working)
    .Cells(9, dercol).PasteSpecial Paste:=xlPasteValues
    'colle le format des données
    .Cells(9, dercol).PasteSpecial Paste:=xlPasteFormats
   'supprime la sélection de cellules
   Application.CutCopyMode = False
  End With
End Sub

très bien je viens de défusionner, merci pour le tips

Rechercher des sujets similaires à "copier coller colonne"