Macro exel formulaire base de donnée

Fermé
Utilisateur anonyme - 25 sept. 2009 à 16:44
pilas31 Messages postés 1825 Date d'inscription vendredi 5 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2020 - 25 sept. 2009 à 17:30
Bonjour,

je viens de créer une base de donnée exel et je veux utiliser un formulaire .Pour cela j'ai trouver le code suivant qui récupère des données dans formulaire(page 2) et les retranscrit dans la base de donnée(page 1):
Sub transpose_dans_tableau()
'Atteindre le formulaire et mémoriser les données
Sheets("formulaire").Select
Range("B1:B3").Select
Selection.Copy
'Test pour déterminer la ligne où coller les infos dans le tableau
Sheets("base de donnée").Select
valeurA2 = Range("A2").Value
If valeurA2 = "" Then
Range("A2").Select
Else
Range("A1").Select
Selection.End(xlDown).Select
ligne_active_base = ActiveCell.Row
Range("A" & ligne_active_base + 1).Select
End If
'Memorise le n° de la ligne où coller les données
ligne_active_base = ActiveCell.Row
'Collage avec transposition
Range("A" & ligne_active_base).Select
Selection.PasteSpecial Paste:=xlPasteValues, _
Operation:=xlNone, Skipblanks:=False, Transpose:=True

'Rendre vierge le formulaire
Sheets("formulaire").Select
Range("B1:B3").Select
Selection.ClearContents
Range("B1").Select
'Retourner dans le tableau
Sheets("base de donnée").Select
Range("A1").Select
End Sub


Le problème vient des ligne en gras.

Quand je clique sur le bouton il m'affiche erreur 400

merci pour votre aide.

cordialement,

Bibu06
A voir également:

2 réponses

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 311
25 sept. 2009 à 17:26
Bonjour,

hébé! je ne sais où tu as trouvé cette macro mais essaies celle-ci en remplacant 2 par "formulaire" et 1 "par base de données" (au passage: évite les espaces dans les noms d'onglet)
Sub remplir_bdd()
Dim ligvide As Long

With Sheets(1)
    ligvide = .Range("A65536").End(3).Row + 1
    .Range(.Cells(ligvide, 1), .Cells(ligvide + 2, 1)) = Sheets(2).Range("B1:B3").Value
    .Activate
End With

Sheets(2).Range("B1:B3").ClearContents

End Sub


1
pilas31 Messages postés 1825 Date d'inscription vendredi 5 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2020 644
25 sept. 2009 à 17:30
Bonjour,

Cette macro fonctionne chez moi.
Je pense que la seule possibilité de générer une erreur 400 vient du fait que c'est une macro de feuille et non pas une macro dans un module.

Pour vérifier aller dans l'éditeur VBA (Alt F11) et regarder si cette macro est attachée à une feuille ou pas.
Si c'est le cas créer un module (insertion module) et couper coller la macro dans ce nouveau module.

Cela doit résoudre le problème.

A+


EDIT : oui je viens de voir le post de michel_m. Je suis d'accord, cette macro traine sur le forum depuis un moment mais elle n'est vraiment pas trés jolie !!!
0