VBA Excel - retour à la ligne

Bonjour, mon programme initial est simple:

table1 = Sheets("Accueil").Range("D22:D44").Value
Sheets("Formulaire").Range("A5:W5") = Application.Transpose(table1)

La première ligne me permet de copier une colonne d'information (D) provenant de la page "Accueil".
Et la seconde ligne me permet de coller ces informations dans une ligne (5) dans la page "Formulaire".
Mon code permet donc de transposer des informations initialement en colonne en ligne sur une autre page.

Jusqu'à là, tout va bien. Je me sers d'ailleurs d'un bouton pour activer le code.

Problème, j'aimerai que lorsque j'appuie sur mon bouton, la première ligne (5) se remplisse. Et que lorsque je ré-appuie sur le bouton, se soit la ligne d'après (6) qui se remplisse. Et ainsi de suite.

Voilà, voilà.
Je ne pense pas que ça soit bien compliqué mais c'est carrément hors de ma porté.

Merci !

4 réponses

  1. bonsoir,
    tu peux faire une boucle "if" une fois le bouton actionné. En gros un truc qui ferait que IF ta table1 est vide THEN ça colle la colonne d'information (D) provenant de la page "Accueil".
    ELSE ça colle ces informations dans une ligne (5) dans la page "Formulaire".

    j'ai pas trop saisi où était collé quoi, mais j'pense que t'as du comprendre le fonctionnement. :)
    0
    1. Contributeur
      Bonjour,
      Si j'ai bien compris, suffit de trouver la dernière ligne vide ?, si oui...
      Dim Lig As Long 
          table1 = Sheets("Accueil").Range("D22:D44").Value 
          Lig = Sheets("Formulaire").Range(A65535).End(xlUp).Row + 1 
          Sheets("Formulaire").Range("A" & Lig & ":W" & Lig) = Application.Transpose(table1)

      A+
      L'expérience instruit plus sûrement que le conseil. (André Gide)
      Si tu te cogne à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
      0
      1. Bonjour, merci d'avoir répondu aussi rapidement ! :-)

        @lermite222: ça me marque erreur. :-(

        Sinon, j'ai trouvé cela:

        table1 = Sheets("Accueil").Range("D22:D44").Value
        i = 5
        Do While (Sheets("Formulaire").Cells(i, 1) <> "") And (i <= 29)
        i = i + 1
        Loop
        Sheets("Formulaire").Rows(i) = Application.Transpose(table1)

        Le code marche et répond à mes attentes.
        Encore merci à vous deux. :-)
        0
        1. Contributeur
          Tu aurais pu chercher un peu.. non ??
          j'ai mis le code à main levée et il y a deux errreurs..
          des guillemets et un S
              Lig = Sheets("Formulaire").Range("A65535").End(xlUp).Rows + 1 

          C'est plus cour que ton Do.. loop
          Prochaine fois, donne le N° de l'erreur.. ça serra plus simple.
          A+
          L'expérience instruit plus sûrement que le conseil. (André Gide)
          Si tu te cogne à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
          0