Rechercher : dans
Par :

Macro excel : formulaire et base de données

Dernière réponse le 25 sep 2009 à 18:17:48 carosempe, le 28 jan 2008 à 15:54:37 
 Signaler ce message aux modérateurs

Bonjour à tous,

J'ai un formulaire excel relié à une base de données excel par une macro que j'ai créée grâce à l'enregistreur de macro.
Cette macro me permet de coller les éléments saisis dans mon formulaire sur ma base de données.

Le problème est que ces infos se collent uniquement sur la première ligne de ma base de données au lieu de s'intégrer les unes en dessous des autres.
Je suppose qu'il manque quelquechose dans ma macro permettant de faire cela mais je ne sais pas quoi.

Voici mon code:

Sub Macro1()
'
' Macro1 Macro
' Macro enregistrée le 28/01/2008 par SARRUS-TEINTURIER
'

'
Range("B10:B12").Select
Selection.Copy
Sheets("Données").Select
ActiveWindow.ScrollColumn = 2
ActiveWindow.ScrollColumn = 3
ActiveWindow.ScrollColumn = 4
ActiveWindow.ScrollColumn = 5
ActiveWindow.ScrollColumn = 6
ActiveWindow.ScrollColumn = 7
Range("N10:P10").Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
Sheets("Saisie").Select
Range("B16").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Données").Select
ActiveWindow.SmallScroll ToRight:=-6
Range("B10").Select
ActiveSheet.Paste
Sheets("Saisie").Select
Range("B17").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Données").Select
Range("A10").Select
ActiveSheet.Paste
Sheets("Saisie").Select
Range("B18:B26").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Données").Select
Range("E10:M10").Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
ActiveWindow.ScrollColumn = 4
ActiveWindow.ScrollColumn = 3
ActiveWindow.ScrollColumn = 2
ActiveWindow.ScrollColumn = 1
Range("A11").Select
Sheets("Saisie").Select
Range("B10:B12,B16:B26").Select
Range("B16").Activate
Application.CutCopyMode = False
Selection.ClearContents
End Sub



Merci pour votre aide

Caro

Configuration: Windows XP
Internet Explorer 6.0

1

touyou23, le 28 jan 2008 à 17:29:09
  • +3

Il faut a un moment donné que tu insère le nombre de lignes correspondant au nombre de lignes de ta table source dans ta table de destination si tu veux pouvoir conserver les données précédentes.

Essaye de réenregistrer ta macro en faisant ca...

Répondre à touyou23

2

carosempe, le 29 jan 2008 à 08:39:37

Bonjour,

Pour ma table de destination ce sera ma base de données, mais qu'entends-tu par table source ?


Merci pour votre aide

Amicalement

Caro

Répondre à carosempe

3

sousou, le 14 fév 2008 à 09:53:36

J'ai besoin des informations concernant les formulaires et les bases de données en excel

Répondre à sousou

4

jolie17, le 10 mar 2009 à 19:51:10
  • +1

Va voir cet article il donne le code VBA qui correspond à ton besoin:

http://www.01net.com/article/273366.html

Répondre à jolie17

5

pang, le 21 mai 2009 à 17:39:58

Je ne connais vraimant rien en programmation. et encore mois visual basic. j'ai suivie la demarche maios la macro présent une erreur a la ligne:
Selection.PasteSpecial Paste:=x1PasteAllExceptBorders, Operation:=x1None, SkipBlanks:=False, Transpose:=True
Que faire? merci

Répondre à pang

6

ODILE, le 10 aoû 2009 à 16:42:25

J'ai le meme problème,
as tu eu une réponse depuis???

Répondre à ODILE

7

pijaku, le 10 aoû 2009 à 16:48:21

Bonjour,
Formulez votre question concernant votre problème, vous aurez une réponse plus adaptée. Ce qui vaut la peine d'être fait vaut la peine d'être bien fait.

Répondre à pijaku

8

ODILE, le 11 aoû 2009 à 10:03:10

Dans le meme style que précédemment, j'essaie de créer une base de données excel.
Mon tableau de ba se de données me convient parfaitement,
en revanche j'essaie de créer un formulaire de saisie sur une autre feuille (il y aura plusieurs utilisateurs de cette base)

j'ai saisi le code proposé par le site 01.net,

Sub transpose_dans_tableau()
Sheets("formulaire client risqués").Select
Range("B1:B16").Select
Selection.Copy
Sheets("base de données client risqués").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
ligne_active_base = ActiveCell.Row
Range("A" & ligne_active_base).Select
Selection.PasteSpecial Paste:=xlPasteAllExceptBorders, _
Skipblanks:=False_, Transpose:=True
Sheets("formulaire").Select
Range("B1:B16").Select
Selection.ClearContents
Range("B1").Select
Sheets("base de données client risqués").Select
Range("A1").Select


End Sub

MAIS il semble qu'il y ai une erreur... ca ne fonctionne pas
message d'erreur: "l'indice n'appartient pas à la selection"

Répondre à ODILE

13

pijaku, le 12 aoû 2009 à 09:57:48

Salut,
Question : pourquoi tester A2 dans la base de données?
A1 est "non vide"?
Tu dois copier B1:B16 de ta feuil formulaire vers la première ligne vide de ta feuil base de donnée, c'est bien ça?
Alors plus simplement :

Sub transpose_dans_tableau()
Sheets("formulaire client risqués").Range("B1:B16").Copy
Sheets("base de données client risqués").Select
ActiveSheet.Range("A65536").End(xlUp).Offset(1, 0).Select
Selection.PasteSpecial Paste:=xlPasteAllExceptBorders, _
Skipblanks:=False_, Transpose:=True
ActiveSheet.Range("A1").Select
Sheets("formulaire client risqués").Range("B1:B16").ClearContents
End Sub
Ce qui vaut la peine d'être fait vaut la peine d'être bien fait.

Répondre à pijaku

9

YATA, le 11 aoû 2009 à 10:11:07

Bonjour,
a quelle ligne se trouve ton erreur !
pour le copié collé ! essaie :
ActiveSheet.Range("A" & ligne_active_base + 1").Select
ActiveSheet.Paste

Répondre à YATA

10

ODILE, le 11 aoû 2009 à 10:15:52

Je met ca ou? désolée,... je m'initie a VBA

Répondre à ODILE

11

YATA, le 11 aoû 2009 à 10:24:06

Sub transpose_dans_tableau()
Sheets("formulaire client risqués").Select
Range("B1:B16").Select
Selection.Copy
Sheets("base de données client risqués").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
ligne_active_base = ActiveCell.Row
ActiveSheet.Range("A" & ligne_active_base + 1").Select
ActiveSheet.Paste

Skipblanks:=False_, Transpose:=True
Sheets("formulaire").Select
Range("B1:B16").Select
Selection.ClearContents
Range("B1").Select
Sheets("base de données client risqués").Select
Range("A1").Select


End Sub

Répondre à YATA

12

ODILE, le 11 aoû 2009 à 10:26:49

ActiveSheet.Range("A" & ligne_active_base + 1").Select

et

Skipblanks:=False_, Transpose:=True


s'affichent en rouge ... :(

message d'eereur: erreur de compilation, erreur de syntaxe

Répondre à ODILE

14

bibu06, le 25 sep 2009 à 15:31:17

Quelqu'un a trouver une solution à ce problème ?

voici mon code j'ai le même problème:

Sub transpose_dans_tableau()
'Atteindre le formulaire et mémoriser les donnée
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").Else
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:=x1PasteAllExceptBorders,
Operation:=x1None, 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ées").Select
Range("A1").Select
End Sub

Les ligne en gras en rouge dans visual et il me dise:

Message d'erreur : "Erreur de compilation:
Attendu: Expression"

Merci pour votre aide

Cordialement,

Bibu06

Répondre à bibu06

15

pilas31, le 25 sep 2009 à 17:56:57

Bonjour,

J'ai déjà corrigé cette erreur dans le forum il y a quelque temps.
il faut remplacer les 1 (le chiffre 1) par la lettre L dans x1None et x1PasteAllExceptBorders

A+
Cordialement,

Répondre à pilas31

16

 michel_m, le 25 sep 2009 à 18:17:48

MESSAGE EN DOUBLON
voir
http://www.commentcamarche.net/...

Pour les autres: La macro fait 7 lignes.... Cordialement, Michel

Répondre à michel_m
Collection CommentÇaMarche.net