Edouardt
Messages postés10Date d'inscriptionlundi 8 janvier 2007StatutMembreDernière intervention 9 janvier 2007
-
8 janv. 2007 à 16:36
hordmomo
Messages postés3Date d'inscriptionmercredi 10 octobre 2007StatutMembreDernière intervention24 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:
Code vba excel formulaire pdf
Code vba formulaire de saisie excel - Meilleures réponses
Générateur de formulaire excel - Meilleures réponses
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 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 #
jrivet
Messages postés7393Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 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
jrivet
Messages postés7393Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 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
Edouardt
Messages postés10Date d'inscriptionlundi 8 janvier 2007StatutMembreDerniè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
Edouardt
Messages postés10Date d'inscriptionlundi 8 janvier 2007StatutMembreDerniè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
valtrase
Messages postés937Date d'inscriptionlundi 19 janvier 2004StatutMembreDernière intervention 9 mai 20224 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
______________________________________________________________________
Edouardt
Messages postés10Date d'inscriptionlundi 8 janvier 2007StatutMembreDerniè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
Edouardt
Messages postés10Date d'inscriptionlundi 8 janvier 2007StatutMembreDerniè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()
Edouardt
Messages postés10Date d'inscriptionlundi 8 janvier 2007StatutMembreDerniè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
jrivet
Messages postés7393Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 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...
'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