Caché fichier Excel pour travailler depuis USERFORM et pouvoir autre Excel

Bonjour,

Je'ai un fichier excel de plusieurs pages avec quelques Userform. Le tout vas bien mais je voulais cacher le Excel (tableur à mes yeux). Cette étape à bien été, mais maintenant, lorsque je veux consulter d'autres fichiers excel je dois fermer mon userform.

J,ai tenté de caché avec la variable 0

Menu.Show 0

Et j'ai aussi tenté de caché avec cette formule.

If Application.Windows.Count > 1 Then
Application.Windows(ThisWorkbook.Name).Visible = False
Else
Application.Visible = False
End If

Dans les deux cas ça fonction mais si j'ouvre un second fichier excel et que je veux faire une recherche sur mon Userform ou lorsque je veux enregistre une données, sa me donne le message d'eurreur suivant:

Erreur d'exécution '9' :
L'indice n'appartient pas à la selection.

Est i je fias le débogage sa m'apporte à mon code de copiage des données de mon Userform vers mon excel ou vice versa (si j'enregistre ou si je modifie) Par exemple la ligne Sheets (''Bd'').select sera en jaune dans ce code.

Private Sub cmdSearch_Click()

' page BD
Sheets("Bd").Select
'on efface ancienne donnée

    ComboBox1 = ""
    ComboBox2 = ""
    TextBox1 = ""
    TextBox2 = ""
    TextBox8 = ""
    TextBox7 = ""
    TextBox9 = ""
    TextBox10 = ""
    TextBox5 = ""
    TextBox6 = ""
    TextBox11 = ""
    TextBox12 = ""
    ComboBox3 = ""
    ComboBox4 = ""
    ComboBoxConclusion = ""
    TextBoxValeurDePerte = ""
    TextBox13 = ""
    TextBox14 = ""

Dim totRows As Long, I As Long
totRows = Worksheets("Bd").Range("A1").CurrentRegion.Rows.Count

    If TextBox0.Text = "" Then
    MsgBox "Entrer le PO recherché!", vbCritical, " Choisir une commande"
    End If

For I = 2 To totRows
'If Trim(Bd.Cells(i, 1)) <> Trim(TextBox0.Text) And i = totRows Then
'MsgBox "Name not found!"
'End If

If Sheets("Bd").Cells(I, 1) = TextBox0.Text Then
TextBox0.Text = Sheets("Bd").Cells(I, 1)
TextBox1.Text = Sheets("Bd").Cells(I, 2)
TextBox2.Text = Sheets("Bd").Cells(I, 4)
ComboBox1.Text = Sheets("Bd").Cells(I, 3)
TextBox8.Text = Sheets("Bd").Cells(I, 5) 'date 1 5e col
TextBox7.Text = Sheets("Bd").Cells(I, 6) ' raison 1 6e col
TextBox9.Text = Sheets("Bd").Cells(I, 7) 'date 2 7e col
TextBox10.Text = Sheets("Bd").Cells(I, 8) ' raison 2 8e col
TextBox5.Text = Sheets("Bd").Cells(I, 9)  'date 3 9e col
TextBox6.Text = Sheets("Bd").Cells(I, 10) ' raison 3 10e col
TextBox11.Text = Sheets("Bd").Cells(I, 11) ' raison 4 11e col
ComboBox2.Text = Sheets("Bd").Cells(I, 12)
TextBox12.Text = Sheets("Bd").Cells(I, 13)
ComboBox3.Text = Sheets("Bd").Cells(I, 14)
ComboBox4.Text = Sheets("Bd").Cells(I, 15)
ComboBoxConclusion.Text = Sheets("Bd").Cells(I, 16)
TextBoxValeurDePerte.Text = Sheets("Bd").Cells(I, 17)
TextBox14.Text = Sheets("Bd").Cells(I, 18)
TextBox13.Text = Sheets("Bd").Cells(I, 19)

currentrow = I 'capture the value of the currentrow

Exit For
End If
Next I
End Sub

Merci pour votre aide :D

Salut,

lorsque je veux consulter d'autres fichiers excel je dois fermer mon userform.

Passe le UserForm en non modal

image

Est i je fias le débogage sa m'apporte à mon code de copiage des données de mon Userform vers mon excel ou vice versa (si j'enregistre ou si je modifie) Par exemple la ligne Sheets (''Bd'').select sera en jaune dans ce code.

Tente en mettant l'assignation complète WorkBook("Ton_Classeur").Worksheets("BD") mais sans le select

    Dim Ctrl
    With Application.Workbooks("Ton_Classeur").Worksheets("BD")
        For Each Ctrl In Me.Controls
            Select Case TypeName(Ctrl)
                Case "TextBox"
                    Ctrl.Value = vbNullString
                Case "ComboBox"
                    Ctrl.ListIndex = -1
                Case Else
            End Select
        Next Ctrl
    End With
'...
'...

End With

De plus ceci ne sert à rien

    If TextBox0.Text = "" Then
    MsgBox "Entrer le PO recherché!", vbCritical, " Choisir une commande"
    End If

Puisque tu continu le code après

Donc le code doit donner à peut près cela

    Dim Ctrl
    With Application.Workbooks("Ton_Classeur").Worksheets("BD")
        For Each Ctrl In Me.Controls
            Select Case TypeName(Ctrl)
                Case "TextBox"
                    Ctrl.Value = vbNullString
                Case "ComboBox"
                    Ctrl.ListIndex = -1
                Case Else
            End Select
        Next Ctrl
    End With

    Dim totRows As Long, I As Long
    totRows = Worksheets("Bd").Range("A1").CurrentRegion.Rows.Count

    If TextBox0.Text = "" Then
        MsgBox "Entrer le PO recherché!", vbCritical, " Choisir une commande"
    Else
        For I = 2 To totRows
            If Sheets("Bd").Cells(I, 1) = TextBox0.Text Then
                TextBox0.Text = Sheets("Bd").Cells(I, 1)
                TextBox1.Text = Sheets("Bd").Cells(I, 2)
                TextBox2.Text = Sheets("Bd").Cells(I, 4)
                ComboBox1.Text = Sheets("Bd").Cells(I, 3)
                TextBox8.Text = Sheets("Bd").Cells(I, 5)    'date 1 5e col
                TextBox7.Text = Sheets("Bd").Cells(I, 6)    ' raison 1 6e col
                TextBox9.Text = Sheets("Bd").Cells(I, 7)    'date 2 7e col
                TextBox10.Text = Sheets("Bd").Cells(I, 8)    ' raison 2 8e col
                TextBox5.Text = Sheets("Bd").Cells(I, 9)    'date 3 9e col
                TextBox6.Text = Sheets("Bd").Cells(I, 10)    ' raison 3 10e col
                TextBox11.Text = Sheets("Bd").Cells(I, 11)    ' raison 4 11e col
                ComboBox2.Text = Sheets("Bd").Cells(I, 12)
                TextBox12.Text = Sheets("Bd").Cells(I, 13)
                ComboBox3.Text = Sheets("Bd").Cells(I, 14)
                ComboBox4.Text = Sheets("Bd").Cells(I, 15)
                ComboBoxConclusion.Text = Sheets("Bd").Cells(I, 16)
                TextBoxValeurDePerte.Text = Sheets("Bd").Cells(I, 17)
                TextBox14.Text = Sheets("Bd").Cells(I, 18)
                TextBox13.Text = Sheets("Bd").Cells(I, 19)

                currentrow = I    'capture the value of the currentrow

                Exit For
            End If
        End If

    Next I

Ça n'a pas fonctionné. Je reçois le message d'erreur de compilation.

capture

Salut,

Sur quelle ligne as-tu le message d'erreur

Directement la première ligne, lorsque je veux le mettre dans le module ''ouvrirAppsFermerExcel''

image

Je te joint le fichier si jamais tu voudrais voir.

Salut,

Je n'ai pas trop de temps à accorder pour la programmation ces temps-ci.

Je ne saurais trop te conseiller de Mettre Option Explicit en tête de tous tes modules car il y a pas mal de variables qui ne sont pas déclarées.

Pour ma part au vu de l'utilisation que tu fais de cette application tu devrais te rabattre sur Access, cela te faciliterait le travail surtout dans les recherches et les impressions. Et même les stats qui seront plus faciles à traiter.

Si tu veux rester sur Excel voici quelques points que tu dois regarder

  • Passer le tableau de la feuille BD en tableau structuré.
  • En général éviter tous les Select qui ne font que ralentir Excel
Range("M685").Select
Selection.Copy
Sheets("IMPCIE").Select
Range("E1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks :=False, Transpose:=False) 
' // Peut être remplacé par 
Sheets("IMPCIE").Range("E1").Value = Range("M685").Value)
  • Donner des noms explicite aux contrôles cela facilitera la vie de tout le monde
  • Et ne pas cacher mais fermer les fenêtres qui ne sont plus utilisées sauf Menu bien sur
Private Sub EnrgNouvPOVersMenu_Click()
    'Fermer l'enregistrement d'un nouveau Po et affichier le menu
    Unload ChercherModifier
    'Application.WindowState = xlMaximized
    'Menu.Show
End Sub

Voilà pour un premier jet...

Merci pour votre temps :)

Bonjour

Pas encore résolu mais je peu l’inscrire comme résolu quand même car je ne crois pas que je trouverais la solution rapidement :P

Rechercher des sujets similaires à "cache fichier travailler userform pouvoir"