Forums XLPages

Tous les messages (Danisoaz)

1 2 »
Re: Temps enregistrement saisie
#1
Débutant XLPages

Inscription: 25/03/2011

Messages: 15

Système d'exploitation:
PC
Version Excel utilisée:
2007
Posté le : 11-08-2011 08h26
Bonjour le forum,



Identification du problème :
Dans ma session d'enregistrement j'appelle 4 procédures :
1 - Enregistrer (écriture dans la table)
2 - Majlisting (réinitialisation d'un listview)
3 - ComboFill (Réinitialisation des combobox du formulaire)
4 - ChargeFiche (Affichage de la dernière saisie)
J'ai chronométré chaque proc pour situer le problème (avec Timer), ce qui m'a permis de trouver la coupable : Combofill.

En fait pour charger mes combobox, j'utilise des collections (ListeType, ListePrénom, ListeVille etc...) pour trier et éliminer les doublons avant de les passer dans les combobox. Or je ne vidais pas ces collections (Set ListeType = Nothing) alors que je vidais bien mon listview...
Bonne journée  
Hors Ligne
Rapport   Haut 

Temps enregistrement saisie
#2
Débutant XLPages

Inscription: 25/03/2011

Messages: 15

Système d'exploitation:
PC
Version Excel utilisée:
2007
Posté le : 10-08-2011 11h58
Bonjour le Forum,

Je gère une base de données de contacts (donc dans une feuille de calcul sans aucune formule) à l'aide d'un formulaire composé d'un listview affichant les contacts, des zones de saisies, et les commandes traditionneles Nouveau, Enregistrer, modifier etc...
Ma proc d'enregistrement écrit les nouvelles données saisies dans la table, mets à jour le listview et rafraîchit le formulaire avec les dernières données.

Tout se passe bien sauf dans le cas de saisies en boucle où les temps d'enregistrement évoluent de façon exponentielle, je n'ai pas chronométré mais schématiquement ça donne à peu près ça :
La première opération d'enregistrement dure moins d'une seconde
La seconde 2 secondes
La troisière 4 secondes

Quelle est l'explication et éventuellement la solution à ce problème ?

Merci
Cordialement


Hors Ligne
Rapport   Haut 

Re: Affichage décimales incohérent
#3
Débutant XLPages

Inscription: 25/03/2011

Messages: 15

Système d'exploitation:
PC
Version Excel utilisée:
2007
Posté le : 09-05-2011 05h25
Bonjour le forum,

Problème résolu (environnement Windows 7 / Excel 2007) :
Panneau config
Horloge ... et région
Modifier format ...et des nombres
Paramètres supplémentaires
Symbole décimal : choisir le point au lieu de la virgule

Je n'ai pas encore testé les incidences que cela peut avoir pour l'utilisateur sur d'autres applis, mais il serait préférable de trouver la commande qui permette d'intervenir sur ce paramètre pour le modifier si nécessaire et le restituer en sortie

cordialement
Daniel 

Hors Ligne
Rapport   Haut 

Re: Affichage décimales incohérent
#4
Débutant XLPages

Inscription: 25/03/2011

Messages: 15

Système d'exploitation:
PC
Version Excel utilisée:
2007
Posté le : 07-05-2011 09h22
PS :
Peut-être qu'avec le formulaire ce serait plus pratique...
Pièce jointe:
zip formulaire.zip   [ Taille: 8.22 Ko - Téléchargements: 440 ]
Hors Ligne
Rapport   Haut 

Re: Affichage décimales incohérent
#5
Débutant XLPages

Inscription: 25/03/2011

Messages: 15

Système d'exploitation:
PC
Version Excel utilisée:
2007
Posté le : 07-05-2011 09h17
Bonjour Didier,

A part t'envoyer tout le code et la table, i.e. +/- 250ko, je ne vois pas comment isoler le problème.
A tout hasard je t'envoie la table et te remercie de ton concours.

Cordialement
Daniel
Pièce jointe:
xlsx Produits.xlsx   [ Taille: 18.67 Ko - Téléchargements: 562 ]
Hors Ligne
Rapport   Haut 

Affichage décimales incohérent
#6
Débutant XLPages

Inscription: 25/03/2011

Messages: 15

Système d'exploitation:
PC
Version Excel utilisée:
2007
Posté le : 06-05-2011 09h45
Bonjour le Forum,

J'affiche dans 3 textbox des données avec 2, 3 et 4 décimales avec le code ci dessous :
TxtPoids.Text = Format(vCellule.Offset(0, 6), "#0.000") 'Poids
TxtCout.Text = Format(vCellule.Offset(0, 8), "#0.0000") 'Coût
TxtTemps.Text = Format(vCellule.Offset(0, 9), "#0.00") 'temps
Après l'enregistrement de la saisie d'un article avec les données 3.567 - 28.3200 - 12.50, le premier affichage est correct.
Quand je modifie un élément quelconque (mais autre) du même article qui utilise exactement les mêmes procédures enregistrer / chargefiche ci dessous, les données en cause sont 3567.000 - 283200.0000 - 12.50.
Et ainsi de suite si je renouvelle 3567000.000 - 2832000000.0000 - 12.50.
C'est une heureuse façon de s'enrichir virtuellement mais ça commence à me ruiner la santé, d'autant qu'il n'y a pas de problèmes tant que je reste sur 2 décimales.
Je précise avoir essayé la virgule, les # en place des 0 et autres choses sans résultats.

Merci de votre aide.
Daniel 

Sub ChargeFiche()

'  Alimentation de la fiche Article

    'recherche de l'enregistrement
    Set vCellule = vWstArticles.Cells(2, 1)
        Do While vClé <> vCellule
            Set vCellule = vCellule.Offset(1, 0)
        Loop
       
    ' si modif charger le n° d'enregistrement
    vNumLigne = vCellule.Row
   
    ' charge les controles
    CbxFamille.Text = vCellule.Offset(0, 1) 'famille
    TxtEtat = vCellule.Offset(0, 2) 'État(Article supprimé)
    CbxLibelléInterne.Text = vCellule.Offset(0, 3) 'libellé interne
    CbxFormat.Text = vCellule.Offset(0, 4) 'Format
    CbxGrammage.Text = Format(vCellule.Offset(0, 5), "###0") 'grammage
    TxtPoids.Text = Format(vCellule.Offset(0, 6), "#0.000") 'Poids
    CbxFournisseur.Text = vCellule.Offset(0, 7) 'Fournisseur
    TxtCout.Text = Format(vCellule.Offset(0, 8), "#0.0000") 'Coût
    TxtTemps.Text = Format(vCellule.Offset(0, 9), "#0.00") 'temps
    CbxLibelléClient.Text = vCellule.Offset(0, 10) 'libellé client
    TxtCommentaires.Text = vCellule.Offset(0, 11) 'commentaires
       
End Sub

Sub Enregistrer()
' Enregistrement d'un nouvel Article ou d'une modification
'-------------------------------------------------

'Contrôle des saisies
vMessage = ""
    If CbxFamille.Text = "" Then vMessage = vMessage & "Famille, "
    If CbxLibelléInterne.Text = "" Then vMessage = vMessage & "Libellé interne, "
    If CbxLibelléClient.Text = "" Then vMessage = vMessage & "Libellé client, "
    If vMessage <> "" Then
        vMessage = "Veuillez saisir : " & vMessage
        Alerte (vMessage): Exit Sub
    End If
    'Incrémentation Code et adresse de l'enregistrement (si modif ou suppr, vNumLigne est chargé dans LvwArticles_ItemClick() )
    If vCommande = "Nouveau" Then
        vClé = Application.WorksheetFunction.Max(Range("A:A")) + 1
        vNumLigne = vWstArticles.Range("A65536").End(xlUp).Row + 1
    End If
   
'Enregistrement dans la table
Set vCellule = vWstArticles.Cells(vNumLigne, 1)

    vCellule.Offset(0, 0) = vClé 'VClé est chargé CmdNouveau,Cmdnouveau2 ou LvwArticles_ItemClick
    vCellule.Offset(0, 1) = CbxFamille.Text
    vCellule.Offset(0, 2) = TxtEtat.Text
    vCellule.Offset(0, 3) = CbxLibelléInterne.Text
    vCellule.Offset(0, 4) = CbxFormat.Text
    vCellule.Offset(0, 5) = Format(CbxGrammage.Text, "###0")
    vCellule.Offset(0, 6) = Format(TxtPoids.Text, "#0.000")
    vCellule.Offset(0, 7) = CbxFournisseur.Text
    vCellule.Offset(0, 8) = Format(TxtCout.Text, "#0.0000")
    vCellule.Offset(0, 9) = Format(TxtTemps.Text, "#0.00")
    vCellule.Offset(0, 10) = CbxLibelléClient.Text
    vCellule.Offset(0, 11) = TxtCommentaires.Text
   
    ThisWorkbook.Save
   
    'Mise à jour des combobox, listview
    LvwArticles.Sorted = False
    MajListingArticles
    ComboFill

    'Conserver les données du dernier Article saisi
    ChargeFiche
    vMessage = ""

    'MAJ des boutons de commande
    vCommande = "Enregistrer"
    Commande vCmdN, vCmdN2, vCmdM, vCmdE, vCmdA
   
End Sub




Hors Ligne
Rapport   Haut 

Problème de Tri d'une listview
#7
Débutant XLPages

Inscription: 25/03/2011

Messages: 15

Système d'exploitation:
PC
Version Excel utilisée:
2007
Posté le : 27-04-2011 17h40
Hors Ligne
Rapport   Haut 

Re: Classe Listview absente des bibliothèques
#8
Débutant XLPages

Inscription: 25/03/2011

Messages: 15

Système d'exploitation:
PC
Version Excel utilisée:
2007
Posté le : 27-04-2011 17h27
Bonjour Guy,

Désolé pour cette longue absence ! Je reprends mon ouvrage seulement aujourd'hui après une période plutôt mouvementée. 

Je te remercie pour toutes ces heures passées à tenter d'expliquer l'inextricable ! Ce contrôle a des comportements pour le moins troublants et ça me rassure un peu sur mes compétences de voir le nombre de pro qui s'y casse les dents ! 

Ton LvwClients.Sorted = False me fait franchir un obstacle, je te remercie de m'avoir déjà fixé rendez vous pour le prochain !

Cordialement
Daniel
Hors Ligne
Rapport   Haut 

Re: Passer un UserForm dans une variable
#9
Débutant XLPages

Inscription: 25/03/2011

Messages: 15

Système d'exploitation:
PC
Version Excel utilisée:
2007
Posté le : 07-04-2011 15h41
Bonjour Guy,

Je note ta méthode mais je n'aurai pas tant de formulaires que ça et d'autre part il n'y en aura guère plus de trois ouverts simultanément qui n'auront pas le même besoin de virginité en même temps !

En fait mon problème s'est résolu en déplaçant la ligne ci-dessous du code du module1 dans lequel est déclarée la variable vUsf, vers le code du userform

Set vUsf = UsfClients
Ce qui m'a interpellé c'est qu'au débogage cette ligne là m'amenait directement dans userform_initialize ().

Pour l'instant ça marche, je testerais plus tard l'appel de la procédure avec ByVal, ça fera plus pro.

Merci de ton concours
Cordialement
Daniel
Hors Ligne
Rapport   Haut 

Passer un UserForm dans une variable
#10
Débutant XLPages

Inscription: 25/03/2011

Messages: 15

Système d'exploitation:
PC
Version Excel utilisée:
2007
Posté le : 07-04-2011 06h56

Bonjour le forum,

Dans un userform j'utilise des procédures du type de celle-ci :

Sub Efface()
 
    Dim vControle As Control
 
    'Boucle sur tous les contrôle pour les mettre à blanc
    For Each vControle In Me.Controls
        If TypeOf vControle Is MSForms.TextBox Then vControle.Text = ""
        If TypeOf vControle Is MSForms.ComboBox Then vControle.Text = ""
    Next
   
    Set vControle = Nothing

End Sub

Je vais créer d'autres userforms qui nécessiteront ces mêmes procédures.
Je les ai donc mises dans le module principal mais je butte sur le remplacement de "Me." par une variable chargée du nom du userform.
J'ai essayé :

Public vUsf As String
vUsf = "UsfClients"

Public vUsf As Object
Set vUsf = UsfClients.Name("UsfClients")

Public vUsf As UserForm
vUsf = UsfClients
 

Aucune de ces 3 déclarations ne fonctionne. Une fois ce problème réglé peut-être serait-il plus conventionnel d'appeler la procédure en passant la variable en val ou ref ?:

Efface vUsf
Sub Efface(ByVal vUsf As UserForm)
 
    Dim vControle As Control
 
    'Boucle sur tous les contrôle pour les mettre à blanc
    For Each vControle In vUsf.Controls
        If TypeOf vControle Is MSForms.TextBox Then vControle.Text = ""
        If TypeOf vControle Is MSForms.ComboBox Then vControle.Text = ""
    Next
   
    Set vControle = Nothing

End Sub

Merci
Cordialement
Daniel


 


Hors Ligne
Rapport   Haut 

1 2 »