1. Ce site utilise des "témoins de connexion" (cookies) conformes aux textes de l'Union Européenne. Continuer à naviguer sur nos pages vaut acceptation de notre règlement en la matière. En savoir plus.

Userform qui disparaît sur un PC mais pas un autre

Discussion dans 'Forum Excel' démarrée par falsuss, 13 Juin 2018.

  1. falsuss

    falsuss XLDnaute Nouveau

    Inscrit depuis le :
    13 Juin 2018
    Messages :
    8
    "J'aime" reçus :
    0
    Bonjour à tous !

    J'ai un gros problème, très handicapant dans le cadre de mon activité pro et pour lequel je ne trouve pas de solution, car c'est un problème typiquement, à la c... =p

    Je suis gérant d'un Escape Game sur Lille et j'ai dev sur une Excel une petite appli pour gérer des chronos, envoyer des sons sur PC, valider des succès/trophées etc ... via une userform.

    J'ai tout fait sur mon portable. Tout fonctionne nickel !!! Sur le portable de mon associé, idem !

    Mais maintenant que ma boîte est ouverte et que je teste en vrai le programme, sur les ordis pro, j'ai un soucis de plantage systématique de ma userform.

    Je ne pense pas que ce soit un soucis de code, car la userform plante, même quand elle est en attente, sans qu'on clique sur quoi que ce soit et sans afficher aucun message. Elle disparaît juste, comme ça, sans raison apparente.

    Sur mon PC portable, je l'ai déjà fait tourner des nuits entières, elle reste affichée. Sur les PC fixes pro, au bout de 13,35,14 minutes ... la userform fini par dépop sans crier gare !

    Quelqu'un aurait une idée ?

    J'espère vraiment trouver car je n'ai pas le budget pour faire développer une appli équivalente =p
     
  2. Chargement...

    Discussions similaires - Userform qui disparaît Forum Date
    cases à cocher dans userform qui en font trop... Forum Excel 29 Avril 2018
    Enregistrer et Quitter Userform Forum Excel 4 Avril 2018
    XL 2007 bouton qui change couleur sur userform Forum Excel 19 Janvier 2018
    XL 2010 Qui pourrait m'aider a codifier mes Userform [Résolu] Forum Excel 9 Septembre 2017
    XL 2010 utiliser un index equiv dans un userform Forum Excel 21 Juin 2016

  3. Staple1600

    Staple1600 XLDnaute Barbatruc

    Inscrit depuis le :
    24 Juin 2005
    Messages :
    24536
    "J'aime" reçus :
    1080
    Habite à:
    Roahzon
    Utilise:
    Excel 2013 (PC)
    Bonsoir le fil, le forum

    @falsuss [Bienvenue sur le forum]
    Oui.
     
  4. falsuss

    falsuss XLDnaute Nouveau

    Inscrit depuis le :
    13 Juin 2018
    Messages :
    8
    "J'aime" reçus :
    0
    Merci
     
  5. Staple1600

    Staple1600 XLDnaute Barbatruc

    Inscrit depuis le :
    24 Juin 2005
    Messages :
    24536
    "J'aime" reçus :
    1080
    Habite à:
    Roahzon
    Utilise:
    Excel 2013 (PC)
    Re

    Il fallait comprendre dans ce oui, un appel du pied vers cette simple action ;)
    joindre un fichier exemple !!!
     
  6. falsuss

    falsuss XLDnaute Nouveau

    Inscrit depuis le :
    13 Juin 2018
    Messages :
    8
    "J'aime" reçus :
    0
    Alors je peux le faire ! D'ailleurs je le fais habituellement systématiquement.

    Mais là pour le coup, c'est long, TRES long et indigeste ! D'autant plus que ça fonctionne sur mon portable et ça plante sur un autre fixe, SANS aucun message.

    Tu le veux vraiment ? =p
     
  7. Staple1600

    Staple1600 XLDnaute Barbatruc

    Inscrit depuis le :
    24 Juin 2005
    Messages :
    24536
    "J'aime" reçus :
    1080
    Habite à:
    Roahzon
    Utilise:
    Excel 2013 (PC)
    Re,

    Bah, sans voir le code VBA de l'userform et sans pouvoir faire de test sur une copie anonymisée de ton fichier
    Je ne vois pas trop ce qu'on peut faire ( à part faire de l'humour comme dans le message#2 ;)
     
  8. falsuss

    falsuss XLDnaute Nouveau

    Inscrit depuis le :
    13 Juin 2018
    Messages :
    8
    "J'aime" reçus :
    0
    Je me disais que ce problème était peut-être déjà arrivé à certains.

    Voilà le fichier ! Maso =p

    Ça plantera forcément car tu n'as pas les fichiers audio et PNG.
    Mais bon, pas besoin d'en arriver jusque là, il suffit de cliquer sur le bouton de l'onglet MJ TRACKING, de mettre n'imp, la fameuse userform apparaît ensuite et voilà. Il faut ensuite juste attendre de constater le plantage ou non de la userform.
     

    Pièces jointes:

  9. Staple1600

    Staple1600 XLDnaute Barbatruc

    Inscrit depuis le :
    24 Juin 2005
    Messages :
    24536
    "J'aime" reçus :
    1080
    Habite à:
    Roahzon
    Utilise:
    Excel 2013 (PC)
    Re

    Juste une réflexion en passant
    Pourquoi donc tu répètes ceci N fois ???
    CommandButton6.BackStyle = fmBackStyleTransparent
    CommandButton7.BackStyle = fmBackStyleTransparent
    CommandButton8.BackStyle = fmBackStyleTransparent
    CommandButton9.BackStyle = fmBackStyleTransparent
    CommandButton10.BackStyle = fmBackStyleTransparent
    CommandButton11.BackStyle = fmBackStyleTransparent
    CommandButton12.BackStyle = fmBackStyleTransparent
    CommandButton13.BackStyle = fmBackStyleTransparent
    CommandButton14.BackStyle = fmBackStyleTransparent
    CommandButton15.BackStyle = fmBackStyleTransparent
    CommandButton16.BackStyle = fmBackStyleTransparent
    CommandButton17.BackStyle = fmBackStyleTransparent
    CommandButton18.BackStyle = fmBackStyleTransparent
    CommandButton19.BackStyle = fmBackStyleTransparent
    CommandButton20.BackStyle = fmBackStyleTransparent
    CommandButton21.BackStyle = fmBackStyleTransparent
    CommandButton22.BackStyle = fmBackStyleTransparent
    CommandButton23.BackStyle = fmBackStyleTransparent
    CommandButton24.BackStyle = fmBackStyleTransparent
    CommandButton25.BackStyle = fmBackStyleTransparent
    CommandButton26.BackStyle = fmBackStyleTransparent
    CommandButton27.BackStyle = fmBackStyleTransparent
    CommandButton28.BackStyle = fmBackStyleTransparent

    Sinon, pour le reste, il y a trop de lignes de code à lire pour ce soir ;)

    Ps: Tu n'as jamais pensé à l'emploi de module de classe?
    (pour les nombreux CommandButton par exemple)
     
  10. falsuss

    falsuss XLDnaute Nouveau

    Inscrit depuis le :
    13 Juin 2018
    Messages :
    8
    "J'aime" reçus :
    0
    Je sais que je fais des pavés dégueux ! =p

    Mais ça marche toujours, sans être trop lent etc ...
    Je n'ai jamais pris le temps de faire des boucles pour les grosses déclarations par manque de temps (même si je sais qu'au final j'en gagnerai !!!) et j'ai pris cette mauvaise habitude.
     
  11. Staple1600

    Staple1600 XLDnaute Barbatruc

    Inscrit depuis le :
    24 Juin 2005
    Messages :
    24536
    "J'aime" reçus :
    1080
    Habite à:
    Roahzon
    Utilise:
    Excel 2013 (PC)
    Re

    Je n'ai pas écrit que j'ai solutionné ton problème!
    Je te dis simplement que vu l'heure qu'il est, ce n'est pas ce soir que je vais me fader la lecture de tout ce code VBA qui effectivement à première vue pourrait être considérablement allégé ;)
     
  12. falsuss

    falsuss XLDnaute Nouveau

    Inscrit depuis le :
    13 Juin 2018
    Messages :
    8
    "J'aime" reçus :
    0
    Je sais très bien. Pourquoi cette remarque ?

    J'ai cliqué sans m'en rendre compte sur "Résolu" ? Oo
     
  13. Staple1600

    Staple1600 XLDnaute Barbatruc

    Inscrit depuis le :
    24 Juin 2005
    Messages :
    24536
    "J'aime" reçus :
    1080
    Habite à:
    Roahzon
    Utilise:
    Excel 2013 (PC)
    Re

    Quelle remarque?

    Je dis simplement qu'il y a beaucoup de lignes de code VBA dans ton userform
    Et quand j'ai commencé à lire ton code, j'ai remarqué qu'il y avait beaucoup de code redondant
    D'où le message#8

    Mais pour l'heure, je vais me coucher ;)
    (car il ne serait pas sage de commencer à étudier ton code VBA en profondeur maintenant)
     
  14. falsuss

    falsuss XLDnaute Nouveau

    Inscrit depuis le :
    13 Juin 2018
    Messages :
    8
    "J'aime" reçus :
    0
    On a du al se comprendre !

    "Je n'ai pas écrit que j'ai solutionné ton problème!"

    Bonne nuit !!!
     
  15. Dranreb

    Dranreb XLDnaute Barbatruc

    Inscrit depuis le :
    31 Janvier 2011
    Messages :
    14512
    "J'aime" reçus :
    878
    Sexe :
    Masculin
    Habite à:
    Belfort
    Utilise:
    Excel 2016 (PC)
    Bonsoir.
    Simple suggestion, pas sûr que ça mette le problème en évidence, mais ajouter provisoirement cette procédure :
    Code (Visual Basic):
    Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    If MsgBox("CloseMode = " & CloseMode & vbLf & "Est-ce normal ?", vbYesNo, "Fermeture " & Me.Name) = vbYes Then Exit Sub
    Cancel = True
    End Sub
     
  16. Lone-wolf

    Lone-wolf XLDnaute Barbatruc

    Inscrit depuis le :
    25 Mars 2010
    Messages :
    7109
    "J'aime" reçus :
    528
    Sexe :
    Masculin
    Travail/Loisirs :
    SE/Programmation (VBA Excel)
    Habite à:
    Ouest-Suisse
    Utilise:
    Excel 2013 (PC)
    Bonjour à tous, Le Forum :)

    @falsuss

    J'ai regarder en gros ton fichier et en l'ouvrant j'ai remarqué une erreur.

    ElseIf TextBox4.Value = "MH" Then varroom = "BDD MH"
    Alors que la feuille a pour nom BDD Mail. Ensuite quelques améliorations à faire si tu ne veux pas utiliser les Modules de Classe

    Code (Visual Basic):

    Sub New Vision()
    'En dessous de Option Explicit, déclare ces variables qui seront globales.
    Dim varroom As String, cel As Range, i As Long, k As Long  'au lieu de les répéter 10 fois.
    'Fait de même pour les autres variables

    If Label25.Caption = "PARAMETRAGE" Then
    Chemin = "D:\partage\MJ Tracking\Sons\Paramétrage\"
    ElseIf Label25.Caption = "TEASE1" Then
    Chemin = "D:\partage\MJ Tracking\Sons\Tease1\"
    ElseIf Label25.Caption = "TEASE2" Then
    Chemin = "D:\partage\MJ Tracking\Sons\Tease2\"
    ElseIf Label25.Caption = "TEASE3" Then
    Chemin = "D:\partage\MJ Tracking\Sons\Tease3\"
    ElseIf Label25.Caption = "TEASE4" Then
    Chemin = "D:\partage\MJ Tracking\Sons\Tease4\"
    End If

    'Là aussi, tu as ceci à plusieures reprises, éfface ce qui est en trop et met-le dans Userform_Activate() qu'une seule fois.


    'Dans le Module Standard, tu inscrit ces 3 chemins comme ceci

    Public Const ChemSons As String = "D:\partage\MJ Tracking\Sons\"
    Public Const ChemShut As string =  "D:\partage\MJ Tracking\Sons\ShutDown\"
    Public Const ChemTrack  As String = "D:\partage\MJ Tracking\PNG\"

    fichier1 = ChemTrack & "objet.jpg"
    fichier2 = ChemSons & "Paramétrage\"
    fichier3 =  ChemShut & "ShutDown\"

    ' Comme te la fait remarquer Staple1600, tu as X fois commandbutton. Modifie comme ceci
    For i = 6 to 28
    Controls("CommandButton" & i).BackStyle = fmBackStyleTransparent
    Next i

    CommandButton11.Caption = "Envier"    ' à échanger avec le 9 et ensuite

    For i = 10 to 20
    Controls("CommandButton" & i).Caption = ""
    Next i

    Sheets(varroom).Select - Range("A2").Select -While ActiveCell.Value <> "" -ActiveCell.Offset(1, 0).Select -Wend    'à changer par

    Set cel = Sheets(varroom).range("a2")
    If cel <> "" Then cel.Offset(1, 0).Select

    ActiveWorkbook.Worksheets(varroom).sort.SortFields.Clear, à changer par
    Sheets(varroom).sort.SortFields.Clear

    Range("CK100000").Select
    Cells.Find(What:=Range("CJ2").Value, After:=ActiveCell, à changer par

    Set cel = Range("CK100000")
    Cells.Find(What:=Range("CJ2").Value, After:=cel,

    ' Tu as 3 fois For each sh, pourquoi faire?

    For Each sh In ActiveSheet.Shapes
          For k = 5 to 7
                If sh.TopLeftCell.Address = Range("A" & k).Address Then sh.Delete
          Next k
    Next sh
    End Sub
     

    Si MH se réfère à la feuille BDD Mail, met plutôt "Mail" à la place.

    Dans UserForm2

    Code (Visual Basic):

    Option Explicit
    Dim WsCube As Worksheet, WsMail As Worksheet, i As Long, k as Long

    Private Sub UserForm_Initialize()
        Set WsCube = Sheets("BDD Cube")
        Set WsMail = Sheets("BDD Mail")
    End Sub

    Private Sub Label100_Click()
        If Label100.BackStyle = fmBackStyleTransparent Then
            Label100.BackStyle = fmBackStyleOpaque
            Label99.BackStyle = fmBackStyleTransparent
            Label101.BackStyle = fmBackStyleTransparent
            Range("A1") = 1
            Range("B1") = "Mail"
            TextBox9.Value = "Mail"
        Else
            Label100.BackStyle = fmBackStyleTransparent
            Range("a1, b1").ClearContents   'Idem pour les autres
        End If
    End Sub

    Private Sub Label119_Click()
    'Ici change textbox9 par la 8
    If TextBox9.Value = "Cube" Then
      With WsCube


      End With

      ElseIf TextBox9.Value = "Mail" Then

    'Et ici
      With WsMail
             k = 7
             For i = 2 to 7
                    k = k + 1
                   .Range("a" & i) = Controls("TextBox" & k)
             Next i
      End With
      End If
    'Au lieu de Range("a2") = TextBox8 - Range("a3") = TextBox9 etc.
    End Sub
     
     
    Dernière édition: 15 Juin 2018
  17. falsuss

    falsuss XLDnaute Nouveau

    Inscrit depuis le :
    13 Juin 2018
    Messages :
    8
    "J'aime" reçus :
    0
    Merci à vous 2 !

    Lone Wolf, BDD MH est déjà en place pour la base de donnée de notre future deuxième salle. Mais tes remarques restent bonnes à prendre et je compte alléger le fichier après avoir résolu le problème (et quand j'aurai le temps accessoirement =p).

    Dranreb, merci ! Je teste ça dès que possible.
     
  18. Staple1600

    Staple1600 XLDnaute Barbatruc

    Inscrit depuis le :
    24 Juin 2005
    Messages :
    24536
    "J'aime" reçus :
    1080
    Habite à:
    Roahzon
    Utilise:
    Excel 2013 (PC)
    Bonsoir le fil, le forum

    @Lone-wolf
    A mon avis, VBE va trop aimé ceci ;)
    Code (Text):

    Public Const ChemSons As String = "Chemin = "D:\partage\MJ Tracking\Sons\"
     
     
  19. Lone-wolf

    Lone-wolf XLDnaute Barbatruc

    Inscrit depuis le :
    25 Mars 2010
    Messages :
    7109
    "J'aime" reçus :
    528
    Sexe :
    Masculin
    Travail/Loisirs :
    SE/Programmation (VBA Excel)
    Habite à:
    Ouest-Suisse
    Utilise:
    Excel 2013 (PC)
    Bonjour falsuss, Jean Marie, Dranreb, Le forum :)

    @Staple1600: errare umanum est ;)
     

Partager cette page