Pb Changement de version d'Excel avec un affichage

Fermé
2015-1158 Messages postés 34 Date d'inscription mardi 27 mars 2018 Statut Membre Dernière intervention 14 juin 2018 - Modifié le 14 juin 2018 à 14:51
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 - 15 juin 2018 à 14:15
Bonjour,

J'ai codé un VBA assez long sur Excel2000. Je vous montre la partie qui plante.

Explication du code:

1) On clique sur le bouton (ActivX)
2) Ca ouvre un fichier Excel Annexe ainsi qu'un userform
3) L'userform se prérempli en cherchant les infos dans le excel annexe.
4) Userform.Show 0 (On laisse le userform en suspend)
5) On ferme le fichier excel annexe.
6) Résultat il me reste le fichier excel principal sur lequel on voit ouvert l'userform prérempli à partir d'un excel annexe.

Sur mon PC avec le Excel2000 tout fonctionne nickel !
Puis j'ouvre le fichier sur Excel2017 avec un autre PC. Il ouvre l'userform mais dès qu'il ferme l'excel annexe il ferme automatiquement l'userform avec. Pourtant le code n'a pas changé. J'en ai déduis que le Excel2017 ne reconnaissait pas le "Userform.Show 0", j'ai essayé avec " Userform.Show False" "Userform.Show vbModeless".

Rien à faire.

Voici l'extrait du code:
Private Sub CB10_Click()
CB = CB10.Caption
If Cells(10, 2) = "Demande" Then
Workbooks.Open Filename:="A:\163_MATERIEL\MATÉRIEL-PARCS\Bungalows\Planification_Bungalows_VBA\Chantier\" + ActiveSheet.name + ".xlsm"
Fichier = ActiveWorkbook.ActiveSheet.Cells(CB + 11, 2)
ChDir ThisWorkbook.Path & "\"
If Fichier <> False Then
UserForm1.Show 0
Else
End If
UserForm31.Show 0
ActiveWorkbook.Save
ActiveWorkbook.Close False
ElseIf Cells(10, 2) = "Retour" Then
Workbooks.Open Filename:="A:\163_MATERIEL\MATÉRIEL-PARCS\Bungalows\Planification_Bungalows_VBA\Chantier\" + ActiveSheet.name + ".xlsm"
UserForm61.Show 0
ActiveWorkbook.Save
ActiveWorkbook.Close False
End If
End Sub


Merci pour votre aide

A voir également:

2 réponses

Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 779
14 juin 2018 à 16:35
Bonjour,

1) "Userform.Show 0", " Userform.Show False" et "Userform.Show vbModeless" c'est pareil !
2) Si l'usf appartient au fichier ouvert, il est normal qu'il se ferme lorsqu'on ferme de fichier, il faut mettre tous les usf dans le fichier qui contient la macro.
0
2015-1158 Messages postés 34 Date d'inscription mardi 27 mars 2018 Statut Membre Dernière intervention 14 juin 2018
14 juin 2018 à 16:37
Merci pour la réponse.
1) Oui je m'en doutais.
2) l'USF appartient au excel principal par contre les réponses lorsque l'USF s'autoconplete appartiennent au excel annexe. Mais le hic c'est que avec EXCEL2000 tout fonctionne, le fichier annexe se ferme et mon UF reste ouvert avec les données. Mais sur EXCEL2017 ca ferme tout. Je pense que c'est un problème d'outils entre les deux versions
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 779
14 juin 2018 à 17:45
A ma connaissance, la dernière version d'Excel est la 2016 et la prochaine la 2018, je n'ai jamais entendu parler de la 2017.

Effectivement avec 2016 j'ai le même comportement, la solution :

Dim uf1 as UserForm1

'....
Set uf1 = UserForm1
Workbooks.Open Filename:="A:\163....."
'....
uf1.Show 0
0
Salut merci pour la réponse, j'ai essayé de déclarer dans la procedure de mon bouton ActivX l'userform comme tu m'as dis. Mais ca ne marche pas:

Dim UserForm31 As UserForm
Dim UserForm61 As UserForm
Dim UserForm1 As UserForm
Dim uf31 As UserForm
Dim uf61 As UserForm
Dim uf1 As UserForm
Set uf31 = UserForm31
Set uf1 = UserForm1
Set uf61 = UserForm61
    CB = CB10.Caption
    If Cells(10, 2) = "Demande" Then
        Workbooks.Open Filename:="A:\163_MATERIEL\MATÉRIEL-PARCS\Bungalows\Planification_Bungalows_VBA\Chantier\" + ActiveSheet.name + ".xlsm"
        Fichier = ActiveWorkbook.ActiveSheet.Cells(CB + 11, 2)
        ChDir ThisWorkbook.Path & "\"
        If Fichier <> False Then
            uf1.Show 0
        Else
        End If
        uf31.Show 0
        ActiveWorkbook.Save
        ActiveWorkbook.Close False
    ElseIf Cells(10, 2) = "Retour" Then
        Workbooks.Open Filename:="A:\163_MATERIEL\MATÉRIEL-PARCS\Bungalows\Planification_Bungalows_VBA\Chantier\" + ActiveSheet.name + ".xlsm"
        uf61.Show 0
        ActiveWorkbook.Save
        ActiveWorkbook.Close False
    End If
End Sub



0
Erreur d'incompatibilité 91, variable ou objet bloc non définit i
0
f894009 Messages postés 17206 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 22 novembre 2024 1 710
15 juin 2018 à 13:49
Bonjour tout le monde,

essayez ceci:
Sub test()
    Dim UserForm31 As UserForm
    Dim UserForm61 As UserForm
    Dim UserForm1 As UserForm
    Dim uf31 As UserForm
    Dim uf61 As UserForm
    Dim uf1 As UserForm
    
    Set uf31 = UserForm31
    Set uf1 = UserForm1
    Set uf61 = UserForm61
    CB = CB10.Caption
    If Cells(10, 2) = "Demande" Then
        Nom_Fichier = ActiveSheet.Name + ".xlsm"
        Workbooks.Open Filename:="A:\163_MATERIEL\MATÉRIEL-PARCS\Bungalows\Planification_Bungalows_VBA\Chantier\" + Nom_Fichier
        Fichier = ActiveSheet.Cells(CB + 11, 2)
        ChDir ThisWorkbook.Path & "\"
        If Fichier <> False Then
            uf1.Show 0
        End If
        uf31.Show 0
        Workbooks(Nom_Fichier).Close True
    ElseIf Cells(10, 2) = "Retour" Then
        Workbooks.Open Filename:="A:\163_MATERIEL\MATÉRIEL-PARCS\Bungalows\Planification_Bungalows_VBA\Chantier\" + Nom_Fichier
        uf61.Show 0
        Workbooks(Nom_Fichier).Close True
    End If
End Sub
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 779
Modifié le 15 juin 2018 à 14:21
Re,

Au lieu de
Dim UserForm31 As UserForm
Dim UserForm61 As UserForm
Dim UserForm1 As UserForm
Dim uf31 As UserForm
Dim uf61 As UserForm
Dim uf1 As UserForm
Set uf31 = UserForm31
Set uf1 = UserForm1
Set uf61 = UserForm61

Essayer simplement :
Dim uf31 As UserForm31
Dim uf61 As UserForm61
Dim uf1 As UserForm1
Set uf31 = UserForm31
Set uf1 = UserForm1
Set uf61 = UserForm61

A condition que les UserForm61, UserForm1 et UserForm31 soient déjà intégrés au fichier, chez moi ça fonctionne correctement (comme dans mon post précédent !)

0