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 :

Excel qui "rame" et obligation de fermer fichier


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur environnement
    Inscrit en
    Juillet 2014
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur environnement
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2014
    Messages : 37
    Par défaut Excel qui "rame" et obligation de fermer fichier
    Salut à tous! J'ai un souci en fin de programme. Dans ce dernier, j'ouvre un formulaire afin de créer un nouvel enregistrement (une nouvelle ligne). Lorsque je quitte mon formulaire par ma touche validation, il m'est alors impossible de travailler sur Excel : impossible de se déplacer, de sélectionner une cellule, etc. Du coup, je dois fermer mon fichier. Lorsque je l'ouvre, cependant, le nouvel enregistrement a bien été créé. Que se passe-t-il? Est-ce qu'une routine continue de tourner et fait ramer Excel?

    D'autre part, je voudrais pouvoir en réouvrant mon formulaire récupérer le dernier enregistrement. J'avais donc pensé utiliser des variables globales : au moment où je clique sur mon bouton de validation, les variables globales récupèrent les données saisies, puis, lorsque je réouvre mon formulaire, j'ai un bouton qui réaffecte à partir de ces variables globales certains champs de mon formulaire. J'ai créé un msgbox afin de vérifier les valeurs des variables globales, et j'ai l'impression que cela ne s'enregistre pas. Pouvez-vous m'aider?

    En pièce jointe mon fichier. Le formulaire correspond à celui qui s'affiche lorsqu'on clique sur le bouton "+"

    Merci à vous!!

  2. #2
    Membre expérimenté
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2018
    Messages
    254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2018
    Messages : 254
    Par défaut
    Bonjour,

    Peux-tu nous montrer ton code directement sur le forum ?

  3. #3
    Membre averti
    Homme Profil pro
    Ingénieur environnement
    Inscrit en
    Juillet 2014
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur environnement
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2014
    Messages : 37
    Par défaut Quelle partie exactement ?
    Voici le code de mon bouton de validation :

    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
    Private Sub btnOK_Click()
    'Lance la procédure de création de ligne et ferme le formulaire
     
    'Vérifie que la provenance, le nom du site et la question sont bien renseignés
    Dim p, s, q As String
     
    p = Me.BoxProvenance.Value
    s = Me.BoxSite.Value
    q = Me.TextQuestion.Value
     
    If p = "" And s = "" And q = "" Then
        MsgBox "Veuillez remplir la provenance et le libellé de la question ainsi que le site concerné"
    Else
        If p = "" And s = "" And q <> "" Then
            MsgBox "Veuillez remplir la provenance et le site concerné"
        Else
            If p = "" And q = "" And s <> "" Then
                MsgBox "Veuillez remplir la provenance et le libellé de la question"
            Else
                If s = "" And q = "" And p <> "" Then
                    MsgBox "Veuillez remplir le libellé de la question ainsi que le site concerné"
                Else
                    If p = "" And q <> "" And s <> "" Then
                        MsgBox "Veuillez remplir la provenance"
                    Else
                        If p <> "" And q = "" And s <> "" Then
                                MsgBox "Veuillez remplir le libellé de la question"
                        Else
                            If p <> "" And q <> "" And s = "" Then
                                    MsgBox "Veuillez remplir le site concerné"
                            Else
                                Me.Hide
                                Call creation
                                Call enregistrement
                                MsgBox "date1 = " & date1 & " prov = " & prov
                            End If
                        End If
                    End If
                End If
            End If
        End If
    End If
     
    End Sub

    La procédure creation permet de créer une ligne supplémentaire à la fin du fichier Excel à partir des champs renseignés du formulaire :

    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
    75
    76
    77
    78
    79
    80
    81
    82
    83
    Sub creation()
    'Fonction permettant de créer une nouvelle ligne dans fichier Excel à partir du formulaire de création d'un nouvel enregistrement
     
    Dim DerLig As Integer
    Dim i As Integer
     
    Application.ScreenUpdating = False
     
    'Détermination de la dernière ligne remplie
    DerLig = Range("A65536").End(xlUp).Row + 1
     
    MsgBox "Ligne à remplir : " & DerLig
     
    Application.ScreenUpdating = False
     
    'If Ligne_Formulaire.TextQuestion.Value <> "" Then
        Cells(DerLig, 1).Value = Ligne_Formulaire.TextQuestion.Value
    'End If
     
    If Ligne_Formulaire.TextDate1.Value <> "" Then
        Cells(DerLig, 2).Value = Ligne_Formulaire.TextDate1.Value
    End If
     
    If Ligne_Formulaire.TextRefCourrier1.Value = "" Then
        Cells(DerLig, 3).Value = Ligne_Formulaire.TextRefCourrier1.Value
    End If
     
    If Ligne_Formulaire.TextRefQuestion.Value = "" Then
        Cells(DerLig, 4).Value = Ligne_Formulaire.TextRefQuestion.Value
    End If
     
    If Ligne_Formulaire.TextReponse.Value <> "" Then
        Cells(DerLig, 5).Value = Ligne_Formulaire.TextReponse.Value
    End If
     
    If Ligne_Formulaire.TextRefCourrier2.Value <> "" Then
        Cells(DerLig, 6).Value = Ligne_Formulaire.TextRefCourrier2.Value
    End If
     
    If Ligne_Formulaire.TextDate2.Value <> "" Then
        Cells(DerLig, 7).Value = Ligne_Formulaire.TextDate2.Value
    End If
     
     
    'If Ligne_Formulaire.BoxProvenance.Value <> "" Then
        Cells(DerLig, 8).Value = Ligne_Formulaire.BoxProvenance.Value
    'End If
     
    'If Ligne_Formulaire.BoxSite.Value <> "" Then
        Cells(DerLig, 9).Value = Ligne_Formulaire.BoxSite.Value
    'End If
     
    If Ligne_Formulaire.BoxApplic.Value <> "" Then
       Cells(DerLig, 10).Value = Ligne_Formulaire.BoxApplic.Value
    End If
     
    If Ligne_Formulaire.BoxCompetence.Value <> "" Then
        Cells(DerLig, 11).Value = Ligne_Formulaire.BoxCompetence.Value
    End If
     
     
    If Ligne_Formulaire.txtCle1.Value <> "" Then
        Cells(DerLig, 12).Value = Ligne_Formulaire.txtCle1.Value
    End If
     
     
    If Ligne_Formulaire.txtCle2.Value <> "" Then
        Cells(DerLig, 13).Value = Ligne_Formulaire.txtCle2.Value
    End If
     
    If Ligne_Formulaire.txtCle3.Value <> "" Then
        Cells(DerLig, 14).Value = Ligne_Formulaire.txtCle3.Value
    End If
     
    If Ligne_Formulaire.txtCle4.Value <> "" Then
        Cells(DerLig, 15).Value = Ligne_Formulaire.txtCle4.Value
    End If
     
    If Ligne_Formulaire.BoxDossier.Value <> "" Then
        Cells(DerLig, 16).Value = Ligne_Formulaire.BoxDossier.Value
    End If
     
    End Sub
    La procédure enregistrement est celle mer permettant d'enregistrer les dernières données afin de les réaffecter si besoin (ne fonctionne pas complètement)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub enregistrement()
    Application.ScreenUpdating = False
     
    With Ligne_Formulaire
        date1 = .TextDate1.Value
        date2 = .TextDate2.Value
        refcourrier1 = .TextRefCourrier1.Value
        refcourrier2 = .TextRefCourrier2.Value
        prov = .BoxDossier.Value
        site = .BoxSite.Value
        dos = .BoxDossier.Value
    End With
    End Sub
    J'espère que vous comprendrez...

  4. #4
    Membre expérimenté
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2018
    Messages
    254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2018
    Messages : 254
    Par défaut
    Concernant ton Excel qui bloque c'est simplement que tu as oublié de réactiver le screenupdating

    Rajoute à la fin de ta procédure : application.screenupdating = true

  5. #5
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re
    bonjour
    non!! tristant le screen updating n'a rien a voir
    il est evident que si le formulaire est en mode modal
    le fait de le masquer ne libere pas l'application
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Me.Hide
    Call creation
    Call enregistrement
    MsgBox "date1 = " & date1 & " prov = " & prov
    peut etre que si tu fermais ton formulaire ce serait mieux
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Me.Hide
    Call creation
    Call enregistrement
    MsgBox "date1 = " & date1 & " prov = " & prov
    unload me
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  6. #6
    Membre averti
    Homme Profil pro
    Ingénieur environnement
    Inscrit en
    Juillet 2014
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur environnement
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2014
    Messages : 37
    Par défaut Application.Screenupdating
    Oui, j'avais effectivement rajouté le Unload me et ça marche mieux. Par contre je n'ai pas bien compris ce que tu veux dire par "formulaire en modal"... et que fait exactement l'application Application.Screenupdating ?

Discussions similaires

  1. Export requete texte -> Excel : erreur quote
    Par Sam 069 dans le forum VBA Access
    Réponses: 1
    Dernier message: 18/07/2007, 15h27
  2. [VBA-E] Aide pour un bouton dans excel qui exécuterai mon code.
    Par pauletta22 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 24/05/2006, 16h23
  3. [VBA-E+SQL] Message d'erreur et excel qui plante
    Par Deejoh dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 16/02/2006, 16h28
  4. Macro excel qui ferme tous les fichiers .xls
    Par max2245 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 10/01/2006, 20h21
  5. [D7-EXCEL2000] Formule dans cellule Excel qui ne se calcule pas
    Par Albertolino dans le forum API, COM et SDKs
    Réponses: 3
    Dernier message: 09/09/2003, 14h18

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