Mettre à la suite (VBA)

Résolu
Bonjour,

Auriez-vous l'oeil pour déterminer comment faire en sorte que les lignes s'incrivant sur la feuille archive_cdd_fincontrat se mettent à la suite et n'écrase pas les donnéees precédentes ?

Il s'agit certainement de modifier la ligne en gras mais je n'y arrive pas...

Merci d'avance

Private Sub CommandButton1_Click()
  'Mise a jour Colonne ICP
  With Worksheets("CDD")
    .Range("O" & Ligne_Select).Value = TextBox2.Value
    
    'Premiere cellule vide en partant d'une cellule
    PCVideA = Worksheets("CDD_Fin_de_Contrat").Columns(1).Find("", Range("A30").End(xlUp), , , xlByRows).Row
    
    'Copie ligne dans Archive_CDD_Fin_de_Contrat
    .Rows(Ligne_Select & ":" & Ligne_Select).Copy Worksheets("Archive_CDD_Fin_de_Contrat").Range("A" & PCVideA)
    
    'Supprime ligne dans CDD
    .Rows(Ligne_Select & ":" & Ligne_Select).Delete xlUp
    
  End With

3 réponses

  1. Contributeur
    Bonjour Co_nexion,

    Il y a longtemps que je n'ai pas travailler avec VBA, mais je pense avoir la réponse à ta question...

    Actuellement tu écrases le contenu de la cellule car tu copies un nouveau contenu. Essaies plutôt d'ajouter ton contenu à l'ancien.

    Comme mentionné plus tôt, je ne me rappelle plus de la syntaxe (probablement qu'un confrère m'aidera), mais sans doute comprendras-tu malgré tout ce qu'il faudra modifier.

    Cellule = Cellule + "Contenu à ajouter"

    Voilà, ce qui faudrait faire.

    Tu dois écrire dans la cellule son ancien contenu (en la lisant) et en ajoutant le nouveau contenu.

    Bonne chance!
    1. Modérateur
      Salut,

      pour mettre un contenu en juxtaposition, préférer & plutôt que +...
    2. Contributeur
      Tout dépend de la syntaxe du langage. En VBA, probablement qu'il est préférable d'utiliser & plutôt que +, mais en C++ ou C#, vous devez utilisez le +.
    3. Modérateur
      Le question porte sur du VBA...:-)
  2. Contributeur
    bonjour
    essaies cette syntaxe à adapter à tes feuilles
    With Sheets("feuil2")
         Rows(.Columns("A").Find("", , , , , xlPrevious).Row) = Sheets("feuil1").Rows(ligne_select).Value
    End With


    1. Bonjour à tous

      Merci de vous intéresser à mon problème.

      J'ai essayer ta formule michel en la mettant à la suite de mon code et en l'adaptant cependant cela ne fonctionne pas et la première fonction prime. Cependant si j'efface la première la ligne disparait...

      Et Hogs, je ne vois pas très bien comment mettre en forme l'idée que tu me suggère...

      Bref je suis toujours bloqué...
      1. Contributeur
        curieux j'(avais testé sur une maquette et la ligne "ligne_select" avec une valeur bidon de ligne_select de feuil1était bien recopiée dans la première ligne vide de la feuille2

        Quant à hogs ce qu'il écrit
        Cellule = Cellule + "Contenu à ajouter" avec & ou + est une concaténation...
      2. Bonjour Michel, Hogs, le forum,

        Je reviens vers vous car n'ayant toujours pas réussi à trouver la solution.

        Je pense que le code que tu m'as fourni Michel est bon cependant je me demandes si ce n'est pas la ligne,

        PCVideA = Worksheets("CDD_Fin_de_Contrat").Columns(1).Find("", Range("A30").End(xlUp), , , xlByRows).Row

        qui peut poser problème. Car les lignes se mettent n'importe où entre la 1ère et la sixième ligne et se recouvrent entres elles.
      3. En ecrivant le précédent post, j'ai penser subitement à quelque chose et il s'avère que je tiens une piste.
        Je reviendrais surement vers vous mais pour l'instant veuillez oublier le message précédent.