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 :

Portée d'une SUB d'un USF // Sub d'un Module


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Février 2016
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Février 2016
    Messages : 100
    Points : 49
    Points
    49
    Par défaut Portée d'une SUB d'un USF // Sub d'un Module
    Bonjour à tous,

    J'aimerai connaitre un peu plus la portée et le mode de fonctionnement d'une procédure dans un USF et d'un module.

    J'ai le problème suivant :

    Sur un USF, bouton click je lance la procédure suivante
    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
    Private Sub cmdPztliste_Click()
     
    Dim derniereligne As String
     
    On Error Resume Next
     
    With Worksheets("historik").Activate
        derniereligne = Range("A1").End(xlDown).Row + 1
     
      With Cells(derniereligne, 1)
       If Len(.Value) = 0 Then ' ID
        .Value = Application.WorksheetFunction.Max(Columns(1)) + 1
       End If
      End With
     
        Cells(derniereligne, 2) = Date
        Cells(derniereligne, 3) = Environ("Username")
        Cells(derniereligne, 4) = USFEintrag.Auftragnr
        Cells(derniereligne, 5) = USFEintrag.HeftNr
        Cells(derniereligne, 6) = USFEintrag.Objekt
        Cells(derniereligne, 7) = USFEintrag.Split
        Cells(derniereligne, 8) = USFEintrag.Auflagegesamt
        Cells(derniereligne, 9) = USFEintrag.belege
        Cells(derniereligne, 10) = USFEintrag.Verpackung
        Cells(derniereligne, 11) = USFEintrag.ExVB
        Cells(derniereligne, 12) = USFEintrag.VBlage
        Cells(derniereligne, 13) = USFEintrag.Lage
        Cells(derniereligne, 16) = USFEintrag.Adresse.Column(0)
        Cells(derniereligne, 17) = USFEintrag.Adresse.Column(1)
        Cells(derniereligne, 18) = USFEintrag.Adresse.Column(2)
    End With
     
    Call calcul   <------------------------
     
    End Sub
    A la fin (ligne 33) j'appel une autre procédure qui est dans un module ...

    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
    Option Explicit
     
    Public Sub calcul()
     
    Dim xlapp       As Excel.Application
    Dim xlsheet     As Excel.Worksheet
    Dim xlBook      As Excel.Workbook
    Dim X           As Integer
    Dim anzahlPal   As Integer
    Dim Auflage As Long, exPal As Long, ExVB As Long, VBlage As Long, lagPal As Long
    Dim aufTrag As String, matchCode As String, Split As String, Verpackung As String
    Dim Adresse As String, straSse As String, oRt As String
    Dim belege As Long, auflageohne As Long
     
    'On Error GoTo gestionerreur
     
    Set xlapp = Excel.Application
    Set xlBook = xlapp.ActiveWorkbook
     
    If USFEintrag.belege = "" Then USFEintrag.belege.Value = "0" Else
     
    aufTrag = USFEintrag.Objekt
    matchCode = USFEintrag.Auftragnr & " / " & USFEintrag.HeftNr
    Split = USFEintrag.Split
    Auflage = USFEintrag.Auflagegesamt
    belege = USFEintrag.belege
    Adresse = USFEintrag.Adresse.Column(0)
    straSse = USFEintrag.Adresse.Column(1)
    oRt = USFEintrag.Adresse.Column(2)
    auflageohne = Auflage - belege
    Verpackung = USFEintrag.Verpackung
     
    Select Case USFEintrag.ExVB
            Case Is = ""
                anzahlPal = InputBox("Anzahl von Paletten")
                If anzahlPal < 1 Then
                MsgBox "Ich brauche min. 1 Pal."
                Exit Sub
                Else
                End If
     
            Case Else
                ExVB = USFEintrag.ExVB
                If USFEintrag.VBlage = "" Then USFEintrag.VBlage.Value = "1" Else
                If USFEintrag.Lage = "" Then USFEintrag.Lage.Value = "1" Else
                exPal = ExVB * VBlage * lagPal
                anzahlPal = WorksheetFunction.RoundUp((auflageohne / exPal), 0)
     
    End Select
     
     
    'Ajouter une feuille de calcul
        Set xlsheet = xlBook.Worksheets.Add
        xlsheet.name = "pzt_Liste"             <------------------------------
     
    'le titre - Entete
        xlsheet.Cells(1, 1) = "Auftrag"
        xlsheet.Cells(1, 2) = matchCode & "_" & aufTrag
        xlsheet.Cells(2, 1) = "Split"
        xlsheet.Cells(2, 2).NumberFormat = "@"
        xlsheet.Cells(2, 2) = Split
        xlsheet.Cells(2, 4) = "Auflage"
        xlsheet.Cells(2, 5) = Auflage
        xlsheet.Cells(2, 5).NumberFormat = "###,###"
        xlsheet.Cells(2, 8).FormulaLocal = "=summe(B:B)"
        xlsheet.Cells(2, 8).NumberFormat = "###,###"
        xlsheet.Cells(1, 7) = Date$
        xlsheet.Cells(1, 8) = Time$
        xlsheet.Cells(1, 9) = Environ("Username")
        xlsheet.Cells(3, 1) = "Palette Nr."
    Si j'avance dans le déroulement avec F8, d'un coup à la ligne 54, la procédure retourne BIZARREMENT dans la procédure de l'USF

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Call calcul
     
    End Sub
    Et me stoppe le déroulement du module ....

    Là je butte sur un OS, que faire et où ???

    Merci pour votre aide

  2. #2
    Membre éprouvé
    Homme Profil pro
    Directeur
    Inscrit en
    Avril 2003
    Messages
    724
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur

    Informations forums :
    Inscription : Avril 2003
    Messages : 724
    Points : 1 166
    Points
    1 166
    Par défaut
    Salut,

    peut être un problème du aux événements de la feuille de calcul.

    avant de lancer calcul, ajoute:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Application.EnableEvents=False
    Call Calcul
    Et réactive les événements à la sortie de calcul.
    Cordialement,

  3. #3
    Membre du Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Février 2016
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Février 2016
    Messages : 100
    Points : 49
    Points
    49
    Par défaut
    Merci pour ta contribution Philippe.

    Malheureusement ca coince au même endroit ...

  4. #4
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 128
    Points : 188
    Points
    188
    Par défaut
    Bonjour Boldair,

    Je vois que ça bloque quand tu crées une nouvelle feuille, c'est bien ça ?
    Dans ce cas, regarde du côté de l'UserForm. Il doit être Modal et dans ce cas c'est possible que ça rentre en conflit avec la nouvelles feuille.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Enlevé le on error resume Next et tu pourras nous donner plus d'informations sur ton problème!

    Quel drôle d'idée affecter à des objets ou des variables des instructions vba!

    Split = USFEintrag.Split

  6. #6
    Membre du Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Février 2016
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Février 2016
    Messages : 100
    Points : 49
    Points
    49
    Par défaut
    Merci à vous pour votre implication.

    Effectivement le soucis provient quand je crée une nouvelle feuille: xlsheet.name "pzt_liste"
    L'USF n'est pas en modal, car j'ai parfois besoin d'accéder à l’arrière plan. Pour imprimer la feuille crée, entre autre.
    Si j'arrive à la créer

    Je vais enlever, dès lundi la gestion d'erreur, je pensais les avoir toutes désactivées... grrr

    @rdurupt : Oups, c'est pas voulu la variable SPLIT. Dans mon domaine d’activité en Allemagne ça signifie Repéré/Version.
    Je vais également renommé cette variable. Ça évitera des soucis par la suite.

    A lundi pour de nouvelles aventures

  7. #7
    Membre du Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Février 2016
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Février 2016
    Messages : 100
    Points : 49
    Points
    49
    Par défaut
    Bonjour le Forum,

    Merci à tous pour votre aide.
    J'ai enfin réussi à règler mon souci.

    je ne saurais dire exactement ou était le problème. Je pense qu'ils en avaient plusieurs.

    J'ai modifié "SPLIT" par "verSSion".
    J'ai aussi modifié l'appel des différents modules ou actions dans les modules, qui étaient mal nommé ...
    Nettoyé un peu les codes et tout fonctionne à merveille.

    Je continu avec ma petite programmation ....

    Nouveau défit, création et gestion de CODE à BARRE.
    Quelqu'un à l'adresse d'un tuto ?

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

Discussions similaires

  1. Déclarer une variable public dans un Sub
    Par dragondumond dans le forum VB.NET
    Réponses: 3
    Dernier message: 09/04/2013, 13h16
  2. [XL-2010] Portée des variables: variables locales ou public; sub, private sub et Option Explicit
    Par RicardoBxl dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 04/02/2011, 20h34
  3. Une chose étrange avec les Sub
    Par supertoms dans le forum VBA Access
    Réponses: 5
    Dernier message: 28/04/2008, 19h02
  4. Appeler une requête paramétrée dans un sub
    Par Celephais dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 13/11/2007, 11h49
  5. Recuperation d'une variable dans un second sub
    Par tineighty dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 17/10/2007, 16h36

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