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:
Formulaire b13
Excel formulaire de saisie de données - Meilleures réponses
Générateur de formulaire excel - Meilleures réponses
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 #
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
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
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
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
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
______________________________________________________________________
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
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()
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
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...
'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
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
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