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 :

Macro et Userform [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2011
    Messages : 5
    Par défaut Macro et Userform
    Bonjour,

    Je vous explique rapidement mon problème.

    J'ai un fichier excel de composé de 4 feuilles. Ce fichier a pour but de visualiser un stock et de chiffrer des envois de palettes chez un prestataire externe.
    Sur la première feuille j'ai créé divers boutons permettant d'accéder aux fonctions voulues et faisant appels à des UserForm, cependant je n'arrive pas à faire en sorte que le userform de la feuille 1 interagisse sur la feuille 2. Pourriez-vous m'aider ?

    J'ai mis le fichier en PJ du message pour que ce soit plus simple pour vous.

    Merci
    Fichiers attachés Fichiers attachés

  2. #2
    Membre Expert Avatar de antonysansh
    Homme Profil pro
    Chargé d'études RH
    Inscrit en
    Mai 2014
    Messages
    1 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé d'études RH
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2014
    Messages : 1 115
    Par défaut
    Bonjour ivan59200,

    La bonne syntaxe est Worksheets("nom de ta feuille") (il manque le 's', en fait tu fais référence à une feuille parmi la collection des feuilles du classeur)

    Ensuite n'oublie pas qu'avec un bloc With, il faut un End With sinon erreur.

    Autre chose sur ta gestion de formulaire pas complètement remplis, si tu affiches un message pour l'utilisateur ("Tous les champs munis d'une astérisque doivent être remplis"), tu dois utiliser un exit sub dans ton if sinon la macro continue mais plante car elle ne trouve pas les infos dans les champs non saisie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    If DateEnvoi.Value = "" Or TextBox1.Value = "" Or TextBox2.Value = "" Then
         MsgBox "Tous les champs munis d'une astérique doivent être remplis"
         Exit Sub
    End If
    Voilà de quoi régler quelque problèmes j'espère.

    Antony

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2011
    Messages : 5
    Par défaut
    Merci de ton aide,

    j'ai bien ajouté le "s" au mot worksheet mais rien à faire cela ne fonctionne pas. Par contre pour le exit sub ça à l'air ok.

    A mon avis, vous le verrez sur mon fichier, je débute en programmation excel du coup il peut manquer bcp de choses et je ne travail pas forcément dans les régles de l'art.

    Ivan

  4. #4
    Membre Expert Avatar de antonysansh
    Homme Profil pro
    Chargé d'études RH
    Inscrit en
    Mai 2014
    Messages
    1 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé d'études RH
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2014
    Messages : 1 115
    Par défaut
    Voila pour t'avancer un peu :

    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    Private Sub CommandButton1_Click()
     
    With UserForm1
            'Test de remplissage
        If .DateEnvoi.Value = "" Or .TextBox1.Value = "" Or .TextBox2.Value = "" Then
            MsgBox "Tous les champs munis d'une astérique doivent être remplis"
            Exit Sub
        End If
            'ajouter une ligne au tableau de stock
        With Worksheets("Stock")
            .Select
            .Rows("6:7").Select
            Selection.Copy
            Selection.Insert Shift:=xlDown
            .Range("C6,D6,E6,G6,I6,L6,M6,N6").Select
            .Range("N6").Activate
            Application.CutCopyMode = False
            Selection.ClearContents
                'Remplissage des cellules
            .Range("D6").Value = UserForm1.DateEnvoi.Value
            .Range("E6").Value = UserForm1.dureean.Value
            .Range("G6").Value = UserForm1.dureemois.Value
            .Range("I6").Value = UserForm1.dureejour.Value
            .Range("L6").Value = UserForm1.NumeroDE.Value
            .Range("M6").Value = UserForm1.TextBox1.Value
            .Range("N6").Value = UserForm1.TextBox2.Value
        End With
        Unload Me
    End With
     
    End Sub
     
    Private Sub CommandButton2_Click()
    Unload UserForm1
    End Sub
     
    Private Sub CommandButton3_Click()
     
    With UserForm1
            'Test de remplissage
        If .DateEnvoi.Value = "" Or .TextBox1.Value = "" Or .TextBox2.Value = "" Then
            MsgBox "Tous les champs munis d'une astérique doivent être remplis"
            Exit Sub
        End If
            'ajouter une ligne au tableau de stock
        With Worksheets("Stock")
            .Select
            .Rows("6:7").Select
            Selection.Copy
            Selection.Insert Shift:=xlDown
            .Range("C6,D6,E6,G6,I6,L6,M6,N6").Select
            .Range("N6").Activate
            Application.CutCopyMode = False
            Selection.ClearContents
                'Remplissage des cellules
            .Range("D6").Value = UserForm1.DateEnvoi.Value
            .Range("E6").Value = UserForm1.dureean.Value
            .Range("G6").Value = UserForm1.dureemois.Value
            .Range("I6").Value = UserForm1.dureejour.Value
            .Range("L6").Value = UserForm1.NumeroDE.Value
            .Range("M6").Value = UserForm1.TextBox1.Value
            .Range("N6").Value = UserForm1.TextBox2.Value
        End With
                'Efface les valeurs saisies pour remplir un nouveau formulaire
        .DateEnvoi.Value = ""
        .dureean.Value = ""
        .dureemois.Value = ""
        .dureejour.Value = ""
        .NumeroDE.Value = ""
        .TextBox1.Value = ""
        .TextBox2.Value = ""
    End With
     
    End Sub
    Tu avais déjà un problème avec les select de cellule, il est impossible pour Excel de sélectionner une cellule d'une autre feuille ! il faut donc sélectionner la bonne feuille ou bien se passer des select sur cellule (ici je sélectionne la feuille avec .select après le with sheets(""))

    Autres problème, cette fois si de syntaxe, c'est normale au début .
    C'est sur .Cells(B2),
    .Cells doit prendre 2 paramètres (ligne et colonne) Donc .Cells(2,2) ou bien tu utilises Range avec comme paramètre le nom de la cellule .Range("B2") ou encore plus directement [B2].

    J'espère être clair et t'avoir aider à avancer

    Antony

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2011
    Messages : 5
    Par défaut
    Vraiment TOP !!

    Merci beaucoup de ton aide, cette partie fonctionne et en plus j'ai compris comment il fallait faire, encore merci à toi.

    Ivan

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

Discussions similaires

  1. [VBA-E] Rafraichir le Userform pendant l'exec d'une macro
    Par amalane dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 12/04/2020, 15h54
  2. Création Macro et Userform
    Par cameleon1970 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 23/04/2012, 13h58
  3. [XL-2003] Macro pour UserForm "Erreur de compilation. Objet requis."
    Par aliasjadawin dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 06/04/2011, 08h53
  4. Mains libres et blocage macro malgré Userform
    Par Baldurr dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 04/07/2010, 17h01
  5. [EXCEL - VBA] Problème ouverture fichier suite Macro Userform
    Par Guidhy dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 26/04/2007, 09h18

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