VBA Excel - retour à la ligne

Fermé
Narcisse - 22 avril 2010 à 18:19
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 - 23 avril 2010 à 14:53
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 !
A voir également:

4 réponses

funbreizhou Messages postés 76 Date d'inscription samedi 10 octobre 2009 Statut Membre Dernière intervention 3 novembre 2011 11
22 avril 2010 à 23:47
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
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 191
Modifié par lermite222 le 23/04/2010 à 00:03
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
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
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 191
Modifié par lermite222 le 23/04/2010 à 14:55
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