IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

création d'une macro pour formulaire


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 28
    Points : 14
    Points
    14
    Par défaut création d'une macro pour formulaire
    Bonjour, j'ai trouvé grâce à google les informations suivante sur un autre forum. Je les ai suivies et malgré tout ca ne fonctionne pas. Erreur 400 à l'exécution de la macro ...

    Voici ce que j'ai taper :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    Sub transpose_dans_tableau()
    'Atteindre le formulaire et mémoriser les données
        Sheets("Formulaire").Select
        Range("B1:B4").Select
        Selection.Copy
    'Test pour déterminer les ligne où coller les infos dans les tableau
        Sheets("Bdd").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:=xlPasteAllExceptBorders, _
        Operation:=x1None, SkipBlancks:=False, Transpose:=True
    'Rendre vierge le formulaire
        Sheets("Formulaire").Select
        Range("B1:B4").Select
        Selection.ClearContents
        Range("B1").Select
    'Retourner dans le tableau
        Sheets("Bdd").Select
        Range("A1").Select
     
    End Sub
    J'ai beau re-re-re-revérifier je ne vois pas d'erreur dans le recopiage

    Comment faire marcher cette commande ?
    la c'est un exercice à terme j'ai l'intention de faire un doc avec un formulaire pour mettre les infos suivantes :
    Nom enfant
    prénom enfant
    Adresse : Adresse du père/de la mère
    Numero de tel : père/mère
    Contact en cas d'urgence
    Assurance (oui/non)

    Je me tâte à le faire sous access, il y aura 160 entrées. La base ne me parait pas trop compliquer à faire toutefois. (le problème étant que j'ai déjà pas mal de donnée en .xl et pas moyen de les transférer sous acess ...)

    PS. : Je viens de mettre en pièce jointe le fichier que j'ai crée.
    Fichiers attachés Fichiers attachés

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Points : 2 443
    Points
    2 443
    Par défaut
    Salut Amadeon et le forum
    C'est les astuces d'excel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub transpose_dans_tableau()
    'Atteindre le formulaire et mémoriser les données
    Sheets("Formulaire").Range("B1:B4").Copy
    'Test pour déterminer les ligne où coller les infos dans les tableau
    Sheets("Bdd").Select
    If Range("A2") = "" Then
        Range("A2").Select
    Else
        Cells(Rows.Count, "A").End(xlUp)(2).Select
    End If
    Selection.PasteSpecial Paste:=xlPasteAllExceptBorders, Transpose:=True
    'Rendre vierge le formulaire
    Sheets("Formulaire").Range("B1:B4").ClearContents
    End Sub
    J'ai déjà regardé ces astuces et ils feraient mieux d'utiliser leur forum pour valider les contenus qu'ils proposent.

    Si tu remplaces ton code par le mien, hormis que t'as moins à écrire, tu auras la même erreur : tu veux sélectionner une cellule de la feuille Bdd alors que tu es sur le module lié à la feuille Formulaire : Excel fait une crise.
    Le même code sur le module lié à la feuille Bdd sera correct.
    Sinon, tu peux remplacer ton code par celui-ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub transpose_dans_tableau()
    'Atteindre le formulaire et mémoriser les données
    Sheets("Formulaire").Range("B1:B4").Copy
    'Test pour déterminer les ligne où coller les infos dans les tableau
    With Sheets("Bdd").Select
        If .Range("A2") = "" Then
            .Range("A2").PasteSpecial Paste:=xlPasteAllExceptBorders, Transpose:=True
        Else
            .Cells(Rows.Count, "A").End(xlUp)(2).PasteSpecial Paste:=xlPasteAllExceptBorders, Transpose:=True
        End If
    End With
    'Rendre vierge le formulaire
    Sheets("Formulaire").Range("B1:B4").ClearContents
    End Sub
    Pas de select et pourtant ça marche.
    A+

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 28
    Points : 14
    Points
    14
    Par défaut
    Merci, par contre j'ai un message d'erreur :
    "objet requis"

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Points : 2 443
    Points
    2 443
    Par défaut
    Salut Amadeon et le forum
    désolé ! Après avoir tempêté, j'ai vérifié, et effectivement l'errur apparaît bien (voilà ce que c'est d'essayer de refaire la macro, sans la recontrôler).
    La même (sans erreur, mais avec commentaires
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    Sub transpose_dans_tableau()
    'Copier la source
    Sheets("Formulaire").Range("B1:B4").Copy
    'Test pour déterminer les ligne où coller les infos dans les tableau
    With Sheets("Bdd")
    'Avec la feuille en préfixe
        If .Range("A2") = "" Then
        'si A2 est vide : Le point dit de lui mettre le préfixe => Sheets("Bdd").range("A2")
            .Range("A2").PasteSpecial Paste:=xlPasteAllExceptBorders, Transpose:=True
            'pour le pastespecial, on ne met que les arguments (nommés) qui sont indispensables
        Else
            .Cells(Rows.Count, "A").End(xlUp)(2).PasteSpecial Paste:=xlPasteAllExceptBorders, Transpose:=True
        End If
    End With
    'Fin du préfixe
    'Rendre vierge le formulaire
    Sheets("Formulaire").Range("B1:B4").ClearContents
    End Sub
    Et comme j'ai retesté, j'ai mis des données, au hazard, et j'ai vu tes listes de validation.
    Ce n'est que des habitudes, mais...
    Année de sortie : tu refuses d'utiliser ton fichier à partir de l'année prochaine, ou d'avoir des films l'année prochaine .
    Au lieu de mettre 2010 en limitation haute, met l'année en cours :Sur ta feuille choix, mets une donnée en B10 par exemple, et regarde ta liste de validation support.
    Menu Insertion>>Nom>>Définir
    tu sélectionnes choix_support et dans sa réféence, tu colles
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =DECALER(Choix!$A$1;0;0;NBVAL(Choix!$A:$A);1)
    Ta liste devient dynamique : elle fait référence à A1, sans décalage(0;0), d'une longueur du nombre de valeurs de la colonne A (NBVAL(Choix!$A:$A)) et d'une largeur de 1 colonne.

    Ne sachant pas ce que tu comptes faire, je ne peux en dire plus. Mais en parlant plutôt dans le sens des BdD, la démarche est assez bancale : c'est comme pour la gestion d'une bibliothèque :
    - On ne peut prêter un livre que si on l'a en stock : donc acheté et non en cours de prêt
    - On ne peut avoir de doublon : tu peux avoir un taxi en VHS et un en DVD, mais pas 2 DVD, à moins de changer le nom pour le rendre unique (Taxi-A et Taxi-B par exemple).
    Et, sans préjuger de la suite, ce qui est sur ton fichier demanderait de s'y pencher plus longuement. Si c'est pour apprendre à manipuler Excel, ce n'est pas le plus important.

    Une erreur est vite faite, et pourtant, c'est un code ultra simple.
    A+

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 28
    Points : 14
    Points
    14
    Par défaut
    Merci, je n'ai pas le temps de tester la mais je le ferais ...

    C'était juste un exercice pour voir des fonctionnalités avancées d'exel que je ne connaissais pas. Maintenant, je ne comprend rien au code alors est ce que ca sert à quelque chose ?

    Je m'attaquerais plutôt au projet de BDD sous Accès pendant les vacances de Juillet (une Bdd regroupant les coordonnées des 170 élèves ainsi que leurs parents et me permettant d'imprimer de feuilles avec certaines informations plutôt que d'autres )

Discussions similaires

  1. Création d'une macro pour compléter un tableau
    Par bingo65 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 12/08/2014, 14h22
  2. Création d'une macro pour une récapitulation
    Par nicole6 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 25/11/2013, 14h25
  3. [XL-2007] création d'une macro pour mettre à jour une BDD
    Par morguie31 dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 17/11/2012, 16h10
  4. Création d'une macro pour générer un xml depuis excel
    Par vieri dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/12/2011, 09h46
  5. Création d'une macro pour remplissage auto
    Par Laura-c dans le forum Macros et VBA Excel
    Réponses: 25
    Dernier message: 19/06/2008, 16h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo