Saisie de données par formulaire Excel

Résolu
Edouardt Messages postés 10 Date d'inscription lundi 8 janvier 2007 Statut Membre Dernière intervention 9 janvier 2007 - 8 janv. 2007 à 16:36
hordmomo Messages postés 3 Date d'inscription mercredi 10 octobre 2007 Statut Membre Dernière intervention 24 novembre 2007 - 24 nov. 2007 à 20:41
Bonjour,
Je voudrais faire un fichier Contact (13 champs) sous excel avec un onglet "base de données" et un onglet "formulaire". L'idée étnt d'utiliser le formulaire dans onglet "formulaire" pour alimenter la feuille "base de données".
J'ai utilisé une macro sur Internet pour le faire mais visiblement il y a une erreur sur de code. Ca coince sur cette linge a priori :
Range("A1").Select"
Bien sûr je n'y connais rien en programmation ! Pourriez-vous m'aider svp ? Me dire comment faire et si vous voyez d'autres anomalies. Merci bcp pour votre réponse !

Sub transpose_dans_tableau()
'Atteindre le formulaire et mémoriser les donées
Sheets("Formulaires").Select
Range("B1:B13").Select
Selection.Copy
'Test pour détermier la ligne ou coller les infos dans le tableau
Sheets("Base de données").Select
valeurA2 = Range("A2").Value
If valeurA2 = "" Then
Range("A2").Select
Else
Range("A1").Select
Selection.End(x1Down).Select
ligne_active_base = ActiveCell.Row
Range("A" & ligne_active_base + 1).Select
End If
'Mémorise 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:=xPasteAllExceptBorders, _
Operation:=x1None, SkipBlanks:=False, Transpose:=True
'Rendre vierge le formulaire
Sheets("Formulaire").Select
Range("B1:B13").Select
Selection.ClearContents
Range("B1").Select
'Retourner dans le tableau
Sheets("Base de données").Select
Range("A1").Select
End Sub
A voir également:

22 réponses

jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
8 janv. 2007 à 16:42
Salut,
Lorsque tu dis ca coince, est ce que VB te donne une erreur si oui laquelle?

@+: Ju£i?n
Pensez: Réponse acceptée
3
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
8 janv. 2007 à 16:50
Juste un petit conseil, évite Opera pour poster sur le forum, préfere IE ou Firefox, ça passera mieux.

Le code remis en forme :

Sub transpose_dans_tableau()
    'Atteindre le formulaire et mémoriser les
donées
    Sheets("Formulaires").Select
    Range("B1:B13").Select
    Selection.Copy
    'Test pour détermier la ligne ou coller les infos dans
le tableau
    Sheets("Base de données").Select
    valeurA2 =
Range("A2").Value
    If valeurA2 = "" Then
        Range("A2").Select
    Else
         Range("A1").Select
         Selection.End(x1Down).Select
         ligne_active_base =
ActiveCell.Row
         Range("A" & ligne_active_base + 1).Select
    End If
    'Mémorise 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:=xPasteAllExceptBorders, _ Operation:=x1None, SkipBlanks:=False,
Transpose:=True
    'Rendre vierge le formulaire
    Sheets("Formulaire").Select
    Range("B1:B13").Select
    Selection.ClearContents
    Range("B1").Select
    'Retourner dans le tableau
    Sheets("Base de données").Select
    Range("A1").Select
End Sub

---- Sevyc64  (alias Casy) ---- # LE PARTAGE EST NOTRE FORCE #
3
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
8 janv. 2007 à 16:55
Salut,

Place Activesheet devant Range soit

ActiveSheet.Range("A1").Select

@+: Ju£i?n
Pensez: Réponse acceptée
3
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
8 janv. 2007 à 23:40
>>Selection.End(x1Down).Select
à changer le 1(un) pour un L(elle)
Selection.End(xlDown).Select

MPi
3

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
9 janv. 2007 à 11:43
Operation:=x1None

encore un 1 à changer pour un L

Écrit Option Explicit tout en haut de ta page de code et roule à nouveau ta macro.
Tu risques d'en trouver d'autres

MPi
3
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
9 janv. 2007 à 12:06
Salut,
En fait ce n'est pas cette ligne qui pose problème mais plus celle où tu utilise ValeurA2 sans la déclarer.
Tiens voici donc ce que tu devrais avoir. (je ne dis pas qu il ne reste pas des erreurs.)

En revanche fait bien un copier coller sinon tu va revenir avec une erreru sur xPasteAllExceptBorders qui en fait est xl
PasteAllExceptBorders

Donc:

Option Explicit 

Sub transpose_dans_tableau() 
Dim ValeurA2 As String 
Dim Ligne_active_base As Long 
    'Atteindre le formulaire et mémoriser les donées
    Sheets("Formulaire").Select 
    Range("B1:B13").Select 
    Selection.Copy 
    'Test pour détermier la ligne ou coller les infos dans le tableau
    Sheets("Base de données").Select 
    ValeurA2 = Range("A2").Value 
    If ValeurA2 = "" Then 
        Range("A2").Select 
    Else 
        ActiveSheet.Range("A1").Select 
        Selection.End(xlDown).Select 
        Ligne_active_base = ActiveCell.Row 
        Range("A" & Ligne_active_base + 1).Select 
    End If 
    'Mémorise 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:=xlPasteAllExceptBorders, Operation:=xlNone, SkipBlanks:=False, Transpose:=True 
    'Rendre vierge le formulaire
    Sheets("Formulaire").Select 
    Range("B1:B13").Select 
    Selection.ClearContents 
    Range("B1").Select 
    'Retourner dans le tableau
    Sheets("Base de données").Select 
    Range("A1").Select 
End Sub 

@+: Ju£i?n
Pensez: Réponse acceptée
3
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
9 janv. 2007 à 14:23
Re,
Tiens essaie de regarder si ce code peu te convenir.

Option Explicit
Sub Transpose_dans_Tableau()
    'Copie la zone B1=>B13 de la feuille formulaire
    ActiveWorkbook.Worksheets("Formulaire").Range("B1:B13").Copy
    'Selectionne la cellule A2 de la feuile Base de données
    ActiveWorkbook.Worksheets("Base de données").Range("A2").Select
    'Si la cellule n'est pas vide alors on selectionne la premiere cellule vide de la colonne
    If ActiveCell.Value <> vbNullString Then ActiveSheet.Range("A" & ActiveCell.End(xlDown).Row + 1).Select 
    'On colle
    Call Selection.PasteSpecial(Paste:=xlPasteAllExceptBorders, Operation:=xlNone, SkipBlanks:=False, Transpose:=True) 
    'Efface le contenu de la zone B1=>B13 de la feuille formulaire
    ActiveWorkbook.Worksheets("Formulaire").Range("B1:B13").ClearContents 
End Sub 

@+: Ju£i?n
Pensez: Réponse acceptée
3
Edouardt Messages postés 10 Date d'inscription lundi 8 janvier 2007 Statut Membre Dernière intervention 9 janvier 2007
8 janv. 2007 à 16:52
Salut Julien !
Quand j'utilise le bouton d'action "Enregistrer" auquel j'ai rattaché la macro, j'ai le message d'érreur suivant :
"Erreur d'exécution 1004.
La méthode "Select" de l'objet "range" a échoué"
Le bug se situe a priori sur la ligne : Range("A1").Select
0
Edouardt Messages postés 10 Date d'inscription lundi 8 janvier 2007 Statut Membre Dernière intervention 9 janvier 2007
8 janv. 2007 à 17:06
merci Julien, vient d'essayer ta modif mais pb pour la ligne suivante à présent !
"Erreur d'ex 1004. Erreur définie par l'application ou par l'objet" Correspond à la ligne : Selection.End(x1Down).Select
0
Edouardt Messages postés 10 Date d'inscription lundi 8 janvier 2007 Statut Membre Dernière intervention 9 janvier 2007
8 janv. 2007 à 17:07
merci mais pas vraiment à l'aise en informatique... désolé
0
valtrase Messages postés 937 Date d'inscription lundi 19 janvier 2004 Statut Membre Dernière intervention 9 mai 2022 3
8 janv. 2007 à 23:18
Salut dis nous comment tu veux gérer ta base car là j'ai vu qqs petites fautes et des select qui non pas lieu d'être.
@+
Cordialement, Jean-Paul  
______________________________________________________________________

Le Savoir n'a de valeur que s'il est partagé
0
Edouardt Messages postés 10 Date d'inscription lundi 8 janvier 2007 Statut Membre Dernière intervention 9 janvier 2007
9 janv. 2007 à 10:26
merci

j'ai esayé avec "L" et je passe cette étape ! mais j'ai un pb deux lignes plus loin maintenant : La méthode Range de l'objet '_Worksheet' a échoué. C'est la ligne :

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

Pour répondre à la question : je veux créer une macro et un bouton, et les associer afin d'insérer automatiquement le contenu du formulaire (j'ai repris mes 13 champs en ligne dans la feuille Formulaire) dans une nouvelle ligne du tableau (feuille base de données avec 13 champs). C'est un fichier contact pour démarrer mon business de prospection client, rien de vraiment dingue. J'aurais bien utilisé Access mais j'ai un mac et mon associé un pc. Excel est un outil compatible entre nous deux.

Voici où e est mon code à présent :

Sub transpose_dans_tableau()
'Atteindre le formulaire et mémoriser les donées
Sheets("Formulaire").Select
Range("B1:B13").Select
Selection.Copy
'Test pour détermier la ligne ou coller les infos dans le tableau
Sheets("Base de données").Select
valeurA2 = Range("A2").Value
If valeurA2 = "" Then
Range("A2").Select
Else
ActiveSheet.Range("A1").Select
Selection.End(xlDown).Select
ligne_active_base = ActiveCell.Row
Range("A" & ligne_active_base + 1).Select
End If
'Mémorise 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:=xPasteAllExceptBorders, _
Operation:=x1None, SkipBlanks:=False, Transpose:=True
'Rendre vierge le formulaire
Sheets("Formulaire").Select
Range("B1:B13").Select
Selection.ClearContents
Range("B1").Select
'Retourner dans le tableau
Sheets("Base de données").Select
Range("A1").Select
End Sub
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
9 janv. 2007 à 10:34
SAlut,

As tu essayer de remettre sur la nouvelle ligne qui plante ActiveSheet.Range("A" & ligne_active_base + 1).Select

@+: Ju£i?n
Pensez: Réponse acceptée
0
Edouardt Messages postés 10 Date d'inscription lundi 8 janvier 2007 Statut Membre Dernière intervention 9 janvier 2007
9 janv. 2007 à 10:37
ça ne marche pas mieux...
0
Edouardt Messages postés 10 Date d'inscription lundi 8 janvier 2007 Statut Membre Dernière intervention 9 janvier 2007
9 janv. 2007 à 11:53
ok viens de faire ce que tu me demandes, j'ai maintenant "Erreur de compilation variable non définie" quand je lance la macro. A priori cette ligne concernée : Sub transpose_dans_tableau()
0
Edouardt Messages postés 10 Date d'inscription lundi 8 janvier 2007 Statut Membre Dernière intervention 9 janvier 2007
9 janv. 2007 à 11:54
Voilà où j'en suis :

Option Explicit
Sub transpose_dans_tableau()
'Atteindre le formulaire et mémoriser les donées
Sheets("Formulaire").Select
Range("B1:B13").Select
Selection.Copy
'Test pour détermier la ligne ou coller les infos dans le tableau
Sheets("Base de données").Select
valeurA2 = Range("A2").Value
If valeurA2 = "" Then
Range("A2").Select
Else
ActiveSheet.Range("A1").Select
Selection.End(xlDown).Select
ligne_active_base = ActiveCell.Row
Range("A" & ligne_active_base + 1).Select
End If
'Mémorise 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:=xPasteAllExceptBorders, _
Operation:=xlNone, SkipBlanks:=False, Transpose:=True
'Rendre vierge le formulaire
Sheets("Formulaire").Select
Range("B1:B13").Select
Selection.ClearContents
Range("B1").Select
'Retourner dans le tableau
Sheets("Base de données").Select
Range("A1").Select
End Sub
0
Edouardt Messages postés 10 Date d'inscription lundi 8 janvier 2007 Statut Membre Dernière intervention 9 janvier 2007
9 janv. 2007 à 12:24
Possible mais maintenant je perds l'affichage de "Transpose_dans_tableau". C'est un pb ? Sinon erreur de compilation. Option Explicit pose pb.
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
9 janv. 2007 à 13:52
Salut,
1 - Que veux dire exactement "perdre l'affichage de transpose_dans_tableau"
2- Option Explicit ne pose JAMAIS de problème au contraire il est la pour avoir plus de rigueur dans le code et donc (normalement) moins d'erreur.

Récapitulons. ce que tu souhaites faire c'est copier les cellule de B1 a B13 de la feuille Formulaire vers la feuille Base de données
En revanche reexplique la condition au niveau de la valeur de A2 car je n'est pas tres bien compris...

@+: Ju£i?n
Pensez: Réponse acceptée
0
Edouardt Messages postés 10 Date d'inscription lundi 8 janvier 2007 Statut Membre Dernière intervention 9 janvier 2007
9 janv. 2007 à 14:57
Bon j'ai un copain qui a regardé et qui vient de me renvoyer le fichier corrigé. Cette version fonctionne mon pb est résolu. Je vous remercie bcp !

Public Sub trans()
Dim numLigne As Integer



Sheets("Formulaire").Select
range("B1:B13").Select
Selection.Copy

'selection de la derniere ligne
Sheets("Base de données").Select
Cells.Select
Columns("A:A").Select
Selection.Find(What:="", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False).Activate
numLigne = ActiveCell.Row

'transpose
range("A" & numLigne).Select
Selection.PasteSpecial Paste:=xlAll, Operation:=xlNone, SkipBlanks:=False _
, Transpose:=True


'Rendre vierge le formulaire
Sheets("Formulaire").Select
range("B1:B13").Select
Selection.ClearContents
range("B1").Select
'Retourner dans le tableau
Sheets("Base de données").Select
range("A1").Select
End Sub
0
hordmomo Messages postés 3 Date d'inscription mercredi 10 octobre 2007 Statut Membre Dernière intervention 24 novembre 2007
13 nov. 2007 à 02:21
je me permet de reprendre le sujet à l origine je me suis servis d'un tuto suivant
http://www.01net.com/article/273366.html

Sub transpose_dans_tableau()
'atteindre le formulaire").Select
Sheets("Formulaire").Select
Range("B1:B4")
Selection.Copy
'test pour déterminer la ligne ou coller les infos dans le tableau


Sheets("Base de données").Select
valeurA2=range("A2").Value
if valeurA2=""Then
Range("A2").Select
Else
Range("A1").Select
Selection.End(x1down).Select
ligne_active_base=ActiveCell.Row
Range("A" & ligne_active_base +1).Select
End If


'memorise le n° de la ligne ou 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, Tra,spose:=True


'rendre vierge le formulaire


Sheets("Formulaire").Select
Range("B1:B4").Select
Selection.ClearContents
Range("B1").Select


Sheets("Base de données").Select
Range("A1").Select
End Sub

le code vba est quasiment similaire , que dois je faire pour que dans l exemple du tuto il marche
ceci me permettra ainsi de le modifier pour ma base de donnée que je cogite un peux quand meme

autre chtite  question possible de creer un bouton avec une macro qui trirais automatiquement la base de donnée suivant des criteres comme quand on va sur tri    

d'avance  merci à vous
0
Rejoignez-nous