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

Excel Discussion :

copier et coller code en multipage


Sujet :

Excel

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2019
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2019
    Messages : 2
    Points : 1
    Points
    1
    Par défaut copier et coller code en multipage
    Bonjour a tous,
    j'aurais besoin de vous pour perfectionner un useform pour une caisse de magasin

    je suis bloque sur une fonctionnalité qui est très importante. j'aimerais pouvoir faire plusieurs ticket d'encaissement ouvert en meme temps pour cela j'ai utiliser un multipage cependant je ne sais pas du tout m'en servir !!
    donc j'ai réussi a faire de faire un command bouton pour crée une nouvelle page mais je n'arrive pas a crée un code qui prendrais le code de la page 1 mais adapter a la page deux sachant qu'elle doivent être complètement indépendante l'une de l'autre.
    j'espère que vous pourrez m'aider à trouver la solution car sinon je vais etre obliger de réécris le code de la page 1 une bonne vingtaine de fois

  2. #2
    Membre éprouvé
    Homme Profil pro
    ingénieur d'étude
    Inscrit en
    Juin 2013
    Messages
    563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : ingénieur d'étude
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2013
    Messages : 563
    Points : 1 141
    Points
    1 141
    Par défaut
    Bonjour,

    La solution viendra probablement des modules de classe.
    Dans un classeur, créez un module de classe nommé 'Classe1' et insérez-y le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Option Explicit
     
    Public WithEvents WrkSht As Worksheet
     
     
    Public Sub WrkSht_Change(ByVal Target As Range)
        MsgBox "La feuille " & WrkSht.Name & " a été modifiée !"
    End Sub
    Puis créez un module standard et mettez-y le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Option Explicit
     
    Dim sheetsWithEvents As Collection
     
     
    Public Sub essai001()
        Dim Obj As Classe1
        Set Obj = New Classe1
        Set Obj.WrkSht = ThisWorkbook.Sheets(1)
        Set sheetsWithEvents = New Collection
        sheetsWithEvents.Add Obj
    End Sub
    Lancez manuellement la subroutine "essai001".

    Vous pouvez maintenant modifier une cellule de la première feuille de votre classeur : une boîte de dialogue doit apparaître pour vous dire que la modification a été repérée par VBA.
    Remarquez que vous n'avez écrit de code dans le module dédié à la feuille 1...

    Cdt

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2019
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2019
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Bonjour, merci mais le problème c’est que je n’utilise Pas le tableur Excel, j’utilise directement le useform pour faire la caisse Excel est juste un support pour utiliser le vba donc je n’utilise pas de tableau Excel donc est ce que tu aurais une autre idée ?

  4. #4
    Membre éprouvé
    Homme Profil pro
    ingénieur d'étude
    Inscrit en
    Juin 2013
    Messages
    563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : ingénieur d'étude
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2013
    Messages : 563
    Points : 1 141
    Points
    1 141
    Par défaut
    Bonjour,

    J'avais à l'évidence mal compris votre problème.
    Pour autant, la solution reste applicable : utilisez un module de classe, et définissez le code que vous voulez appliquer aux pages de votre multipage via les méthodes de votre classe.
    Si vous avez besoin de gérer les événements d'une page, vous pouvez utiliser le mot-clé WithEvents et stocker vos objets dans une Collection.

    Cdt

    EDIT:
    Comme rien ne vaut un exemple, même simple, voici un petit bout de code qui devrait vous aider un peu.

    Créez un module de classe nommé Classe1 et mettez-y le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Option Explicit
     
    Public TBox As Control
    Public Lbl As Control
    Public WithEvents CBtn As CommandButton
     
    Public Sub CBtn_Click()
        Lbl.Caption = TBox.Text
    End Sub
    Créez également une UserForm. Ajoutez-y un multipage ("Multipage1"), et sur chacune des 2 pages intiales ajoutez une TextBox ("TextBox1" sur 'Page1' et "TextBox2" sur 'Page2'), un Label et un CommandButton.
    Insérez le code suivant dans le module de la UserForm :
    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
    Option Explicit
     
    Private objCol As Collection
     
    Private Sub UserForm_Initialize()
        Dim obj As Object
        Set objCol = New Collection
        CreatePageObj obj, Me.CommandButton1, Me.TextBox1, Me.Label1
        CreatePageObj obj, Me.CommandButton2, Me.TextBox2, Me.Label2
    End Sub
     
    Private Sub CreatePageObj(obj As Object, btn As Control, tb As Control, lb As Control)
        Set obj = New Classe1
        Set obj.CBtn = btn
        Set obj.TBox = tb
        Set obj.Lbl = lb
        objCol.Add obj
    End Sub
    En lançant votre UserForm, vous pourrez observer que l'appui sur un bouton vient recopier le texte de la textbox vers le label, sur la page 1 comme sur la page 2.
    Créer 150 pages qui sont indépendantes et fonctionnent de la même façon devient bien plus simple.

    Vous pourriez même créer vos contrôles dynamiquement, mais cela ne rentre plus dans le cadre de votre question.

Discussions similaires

  1. [Excel 2003] - Copier/Coller code VBA automatiquement
    Par n0vocaine dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 10/04/2012, 16h48
  2. Sélectionner, copier et coller tout le code source d'une page web
    Par tsing dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 04/01/2008, 10h48
  3. [Word] Problème de copier/couper/coller suivant les versions
    Par SkYsO dans le forum API, COM et SDKs
    Réponses: 6
    Dernier message: 07/12/2005, 21h11
  4. VC++ : pb avec copier et coller ....
    Par Cédric_07 dans le forum MFC
    Réponses: 4
    Dernier message: 15/09/2004, 14h05
  5. [VB6] Interception des évènement Copier/Couper/Coller
    Par youtch dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 18/10/2002, 17h09

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