Problème script en VBA

Résolu/Fermé
goomis95 Messages postés 39 Date d'inscription mardi 3 novembre 2009 Statut Membre Dernière intervention 3 décembre 2009 - 3 nov. 2009 à 16:05
goomis95 Messages postés 39 Date d'inscription mardi 3 novembre 2009 Statut Membre Dernière intervention 3 décembre 2009 - 3 nov. 2009 à 16:23
Bonjour a tous,

J'ai recherché plusieurs solutions à mon problèmes sous divers forums, et tester toutes les dites solutions mais aucune ne marchent alors je post.
Mon problème se situent avec le langage VBA pour créer une sorte de base de données sous excel.

Je situe le contexte avant de présenter mon code :
une page Formulaire pour entrer les données
une page logiciel pour mettre à la fin du tableau ( première ligne vide donc ) les données entrer dans le formulaire.

Seulement le problème c'est que ca ne se passe pas comme je le souhaite.
Je vous demanderais d'être indulgent si c'est une erreur bête, j'ai commencer ce matin le VBA et malgré tous les forums et tuto je n'ai pas trouver la solution.

1er code :

Sub insertion()

'Atteindre le formulaire et mémoriser les données
Sheets("Formulaire").Select
Range("A2:I2").Select
Selection.Copy

'Test pour déterminer la ligne où coller les infos dans le tableau
Sheets("logiciel").Select
Selection.End(xlDown).Select
ligne_active_base = ActiveCell.Row
Range("A" & (ligne_active_base + 1)).Select

'Memorise le n° de la ligne où coller les données
ligne_active_base = ActiveCell.Row

'Collage
Range("A").Select
Selection.Colly ( dans un moment de désespoir j'ai osé le tenter :p )

'Rendre vierge le formulaire
Sheets("Formulaire").Select
Range("A2:I2").Select
Selection.ClearContents

'Retourner dans le tableau
End Sub

Ce code ci ne marche tout simplement pas :'(.


2eme code :

Sub transfert()

Dim tra()
Dim c As Integer
ReDim tra(8)

'Atteindre le formulaire et transfèrer les données dans variable "tra"
Sheets("formulaire").Select
tra(0) = Range("A2").Value
tra(1) = Range("B2").Value
tra(2) = Range("C2").Value
tra(3) = Range("D2").Value
tra(4) = Range("E2").Value
tra(5) = Range("F2").Value
tra(6) = Range("G2").Value
tra(7) = Range("H2").Value
tra(8) = Range("I2").Value

' -- vers feuille de stockage
Sheets("Logiciel").Select

' trouver la première ligne vide qui suit dans le tableau et copier les données de la variable "tra"
nli = Range("A1").End(xlDown).Offset(0, 1).Row
For c = 0 To 8
ActiveSheet.Cells(nli, (c + 1)) = tra(c)
Next c

' retour à la feuille de saisie des données et initialiser les plages
Sheets("Formulaire").Select
Range("A2:I2").ClearContents
End Sub

problème de ce code ci : il ne va pas à la derniere ligne et m'inscris les données de formulaire à la deuxieme ligne de la feuille "logiciel" automatiquement.


et enfin 3eme code :

je remplace :
nli = Range("A1").End(xlDown).Offset(0, 1).Row

par ceci :
While Range("A" & i & "").Value = ""
i = i + 1
Wend

mais cela ne marche pas non plus


aidez moi s'il vous plait !

Merci d'avance

1 réponse

goomis95 Messages postés 39 Date d'inscription mardi 3 novembre 2009 Statut Membre Dernière intervention 3 décembre 2009
3 nov. 2009 à 16:23
Pour ceux que ca interesse j'ai trouvé la solution. Je suis plutot content de moi vu que ce matin je ne connaissait pas du tout le langage VBA même si ce que j'ai fait reste basique mdr ... lol

JE suis parti du tuto de ce site https://www.01net.com/actualites/ en faisant leur example en même temps mais voila leur code ne marchait pas ! :'(

J'ai donc airer sur tous les sites possibles et astuces diverses pour résoudre mon problème en le bidouillant comme pas possible et je suis arriver à sortir un script qui fonctionne ( sous Excel 2003 ). Je le donne en cas ou certain en aurait besoin.

Sub transfert()

Dim tra()
Dim c As Integer
ReDim tra(8)

'Atteindre le feuillet "Formulaire" et transférer les données dans variable "tra"
Sheets("formulaire").Select
tra(0) = Range("A2").Value
tra(1) = Range("B2").Value
tra(2) = Range("C2").Value
tra(3) = Range("D2").Value
tra(4) = Range("E2").Value
tra(5) = Range("F2").Value
tra(6) = Range("G2").Value
tra(7) = Range("H2").Value
tra(8) = Range("I2").Value

'Recherche la 1ere ligne vide dans le feuillet "logiciel"
Sheets("logiciel").Select

nli = ActiveSheet.Range("A65356").End(xlUp).Row + 1
For c = 0 To 8
ActiveSheet.Cells(nli, (c + 1)) = tra(c)
Next c

'Retour à la feuille de saisie des données (Formulaire) et initialiser les champs
Sheets("Formulaire").Select
Range("A2:I2").ClearContents

End Sub



Bien sur avec la macro j'ai créer un bouton permettant l'ajout des que l'on clic dessus.
Voiloo si jamais ca peut servir ... au plaisir :)
0