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 :

Comment écrire sur une nouvelle ligne ?


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    120
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 120
    Par défaut Comment écrire sur une nouvelle ligne ?
    bonjours a tous,

    je creer une base de données sous excel avec 3 feuilles:
    - la premiere affichera les renseignement
    - la seconde permet de les ecrirent et contient une macros pour envoyer les info vers la premiere
    - la troisieme est un menu.

    le probleme est que je n'arrive pas a faire fonctionner ma macros,
    j'ai erreur 400 qui apparait ou des problemes de classe.

    Voici le site ou j'ai trouvé le code: http://www.01net.com/article/273366.html

    et voici le code:

    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
    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 la ligne où 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 pù 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:B4").Select
    Selection.ClearContents
    Range("B1").Select
    'Retourner dans le tableau'
    Sheets("Base de données").Select
    Range("A1").Select
    End Sub
    merci

  2. #2
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Par défaut
    bonjour

    dans ton code initial certaines constantes contiennent le chiffre 1 à la place de la lettre l (L)

    x1Down

    x1PasteAllExceptBorders

    x1None



    Tu peux tester cette adaptation pour éviter les Select

    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
    Sub transpose_dans_tableau_V02()
        Dim ligne_active_base As Integer
     
        Worksheets("Formulaire").Range("B1:B4").Copy
     
        If Worksheets("Base de données").Range("A1") = "" Then
            ligne_active_base = 1
            Else
            ligne_active_base = Worksheets("Base de données"). _
                Range("A65536").End(xlUp).Row + 1
        End If
     
        'Collage avec transposition'
        Worksheets("Base de données").Range("A" & ligne_active_base). _
            PasteSpecial Paste:=xlPasteAllExceptBorders, _
            Operation:=xlNone, SkipBlanks:=False, Transpose:=True
     
        'Rendre vierge le formulaire'
        Worksheets("Formulaire").Range("B1:B4").ClearContents
        'Désactive le mode copier/coller
        Application.CutCopyMode = False
    End Sub


    bonne journée
    michel


    [EDIT] Grosse erreur de ma part:
    remplacement de
    Range("A1").End(xlUp).Row + 1
    par
    Range("A65536").End(xlUp).Row + 1

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    120
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 120
    Par défaut
    salut

    j'ai testé ta macros mais j'ai un message qui s'affiche:

    "indice n'appartient pas a la sélection"

    Tu sait ce que cela veut dire?

    Merci

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    86
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations forums :
    Inscription : Avril 2006
    Messages : 86
    Par défaut
    Ce message apparaît quand le nom d'une feuille ou formulaire n'est pas correct... Exemple : si tu fait un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheet("Formulaire").Range(xxx)....
    et que "Formulaire" n'existe pas.

    Dans ton cas, je crois que cela vient du "Worksheets"... Essaie de remplacer par "Sheets", et vérifie si les noms des feuilles sont corrects dans le code

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    120
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 120
    Par défaut
    Sa marche, j'arrive a transferer les donnée du formulaire vers la page Base de données.

    Par contre il n'y a pas d'incrementation. C'est a dire que des que je rentre des données dans le formulaire et que je enregistre elle s'écrivent sur la meme ligne

    merci

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    86
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations forums :
    Inscription : Avril 2006
    Messages : 86
    Par défaut
    Citation Envoyé par cobra85 Voir le message
    Par contre il n'y a pas d'incrementation. C'est a dire que des que je rentre des données dans le formulaire et que je enregistre elle s'écrivent sur la meme ligne
    Est-ce qu'il s'agit d'un problème (dans quel cas, un peu de précisions), ou simplement d'une remarque concernant le code qui t'avait été proposé ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. comment écrire plusieurs instructions sur une même ligne ?
    Par Ekimasu dans le forum Général Python
    Réponses: 3
    Dernier message: 31/10/2008, 10h30
  2. Réponses: 7
    Dernier message: 23/03/2007, 10h41
  3. comment se positionner sur une ligne de table mysql ?
    Par pas30 dans le forum Requêtes
    Réponses: 3
    Dernier message: 13/01/2007, 13h43
  4. Réponses: 2
    Dernier message: 07/12/2005, 16h26
  5. Comment écrire sur une image, dans un cadre ?
    Par Nutrino dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 20/05/2005, 00h55

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