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 :

Transférer des données d'un formulaire vers une feuille de données


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2013
    Messages : 4
    Par défaut Transférer des données d'un formulaire vers une feuille de données
    Bonjour,
    Je réalise un projet de gestion des stocks sous Excel. J'ai réalisé un formulaire qui me permet de rentrer ou sortir des produits de mon stock. A partir de ce formulaire, je souhaite transférer toutes les données saisies de ce formulaire vers une feuille de données qui me permettrait par la suite de faire une analyse de la consommation. Je ne connait pas très bien le VBA et je suis bloqué, pour l'instant, mes données sont recopiés dans la feuille de données, mais elles s'inscrive les unes sur les autres et ce sont les formules qui s'affiche et non les valeurs.

    Mon code est le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    If op = "Sortie" Then
            Application.EnableEvents = False
            With Worksheets("Saisie en stock")
            .Range("b5:b8").Copy Worksheets("Recap centre").Range("a2:a5")
            End With
            Application.EnableEvents = True
    Avez vous une solution ?

    Merci

  2. #2
    Membre Expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Par défaut
    Bonjour,

    La méthode Copy effectue la copie de la plage vers la plage spécifiée.
    Si tu souhaites ne coller que les valeurs (et non pas les formules), il faut utiliser PasteSpecial pour le collage.
    De plus, si tu ne veux pas qu’elles s'inscrivent les unes sur les autres, il faut déterminer le numéro de ligne (ou de colonne) où ce collage sera effectué.
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    'On effectue la copie des données
    Worksheets("Saisie en stock").Range("B5:B8").Copy
    'On cherche le numéro de la ligne où sera effectué l'ajout
    DerLig = Worksheets("Recap centre").Range("A2").End(xlDown).Row + 1
    'On effectue le collage des valeurs
    Worksheets("Recap centre").Range("A" & DerLig).PasteSpecial Paste:=xlPasteValues
    Cordialement.

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2013
    Messages : 4
    Par défaut
    Bonjour,

    Tout d'abord merci, cela fonctionne très bien, cependant les données s'affichent les unes en dessous des autres, y aurait-il un moyen de placer chaque type de données les unes en face des autres ?

    J'espère avoir été clair dans mes explications.

    Merci

  4. #4
    Membre Expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Par défaut
    En face les unes des autres, c’est une notion très abstraite .
    Je vais donc supposer que tu veux placer tes données les unes à coté des autres, c'est-à-dire en colonnes.
    Tu peux tester comme cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        'On effectue la copie des données
        Worksheets("Saisie en stock").Range("B5:B8").Copy
        'On cherche le numéro de la colonne où sera effectué l'ajout
        ColAjout = Worksheets("Recap centre").Range("A2").End(xlToRight).Column + 1
        'On effectue le collage des valeurs
        Worksheets("Recap centre").Cells(2, ColAjout).PasteSpecial Paste:=xlPasteValues
    Cordialement.

  5. #5
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2013
    Messages : 4
    Par défaut
    J'ai du faire une bêtise, j'ai un message d'erreur quand j'active la macro

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
            If op = "Sortie" Then
            Application.EnableEvents = False
            With Worksheets("Saisie en stock").Range("B5:B8").Copy
            ColAjout = Worksheets("Recap centre").Range("A2").End(xlToRight).Column + 1
            Worksheets("Recap centre").Cells(2, ColAjout).PasteSpecial Paste:=xlPasteValues 'cette ligne se surligne et affiche un message qui me met erreur définie par l'application ou par l'objet
            End With
            Application.EnableEvents = True
    J'ai remarqué tout a l'heure que quand j'ai testé la première macro, je n'avait pas effacé le résultat de la première, du coup, j'ai effacé tout mon tableau, et quand j'ai voulu recommencer, la macro ne fonctionnait plus.
    Du coup, faut-il vraiment laisser les anciens résultats pour que cela fonctionne Je trouve cela assez bizarre

  6. #6
    Membre Expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Par défaut
    Normal, s'il n'y a pas de données, la recherche de la dernière colonne renseignée aboutit au taquet de la feuille.
    Tu peux remplacer par ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
            Worksheets("Saisie en stock").Range("B5:B8").Copy
            With Worksheets("Recap centre")
                ColAjout = .Cells(2, Columns.Count).End(xlToLeft).Column
                If Not (ColAjout = 1 And .Cells(2, ColAjout) = "") Then ColAjout = ColAjout + 1
                .Cells(2, ColAjout).PasteSpecial Paste:=xlPasteValues 'cette ligne se surligne et affiche un message qui me met erreur définie par l'application ou par l'objet
            End With
    Cordialement.

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

Discussions similaires

  1. Transfert de données issues d'un formulaire vers une feuille excel
    Par elo1989 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 26/01/2014, 23h11
  2. Réponses: 5
    Dernier message: 20/12/2012, 11h22
  3. [MySQL] Inscription des données d'un formulaire dans une base de données
    Par xjulio59 dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 25/08/2010, 14h45
  4. Réponses: 8
    Dernier message: 12/10/2007, 12h54
  5. Récuperer des données de fichier pdf vers une feuille xls
    Par zeralium dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 31/08/2007, 14h03

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