Macro excel : formulaire et base de données
carosempe
-
ccinfo -
ccinfo -
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
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
A voir également:
- Macro excel : formulaire et base de données
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Si ou excel - Guide
- Déplacer colonne excel - Guide
9 réponses
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...
Essaye de réenregistrer ta macro en faisant ca...
Va voir cet article il donne le code VBA qui correspond à ton besoin:
https://www.01net.com/actualites/
https://www.01net.com/actualites/
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
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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
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
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"
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"
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
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
Bonjour,
a quelle ligne se trouve ton erreur !
pour le copié collé ! essaie :
ActiveSheet.Range("A" & ligne_active_base + 1").Select
ActiveSheet.Paste
a quelle ligne se trouve ton erreur !
pour le copié collé ! essaie :
ActiveSheet.Range("A" & ligne_active_base + 1").Select
ActiveSheet.Paste
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
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
MESSAGE EN DOUBLON
voir
https://forums.commentcamarche.net/forum/affich-14519469-macro-exel-formulaire-base-de-donnee
Pour les autres: La macro fait 7 lignes....
voir
https://forums.commentcamarche.net/forum/affich-14519469-macro-exel-formulaire-base-de-donnee
Pour les autres: La macro fait 7 lignes....