Programmation de mon 1er USF / MULTIPLE FONCTIONS
Fermé
HIBISCUS988
Messages postés
31
Date d'inscription
jeudi 9 février 2017
Statut
Membre
Dernière intervention
15 mars 2018
-
19 févr. 2018 à 14:58
Passionofdream Messages postés 820 Date d'inscription mardi 21 juillet 2015 Statut Membre Dernière intervention 11 mai 2021 - 16 mars 2018 à 11:41
Passionofdream Messages postés 820 Date d'inscription mardi 21 juillet 2015 Statut Membre Dernière intervention 11 mai 2021 - 16 mars 2018 à 11:41
A voir également:
- Programmation de mon 1er USF / MULTIPLE FONCTIONS
- Application de programmation - Guide
- Excel cellule choix multiple - Guide
- Ecran multiple pc - Guide
- Presse papier multiple - Guide
10 réponses
Kalissi
Messages postés
218
Date d'inscription
jeudi 2 mai 2013
Statut
Membre
Dernière intervention
15 juillet 2019
20
19 févr. 2018 à 18:56
19 févr. 2018 à 18:56
Bonjour,
Observations :
1.) Ce classeur contient beaucoup de plages nommées. Pour pouvoir décortiquer le tout
il faut connaître ces plages nommées.
Recommandation : Créer une nouvelle feuille Excel et rouler la macro ci-dessous pour avoir
une liste des plages nommées avec les adresses correspondantes.
2.) Le problème d'affichage de Dates
Sour VBA, comme avec tous les langages que j'ai utilisé à ce jour, il faut distinguer
le contenant du contenu.
Un combobox est un contenant.
Une date est un contenu.
Or sous VBA un combobox est un contenant qui n'accepte qu'un contenu string.
Une date n'est pas un contenu string, c'est un contenu date.
La propriété RowSource du combobox10 pointe sur une plage nommé "ListeDate" et
les cellules de cette plage sont au format "Date". Il y a incompatibilité de type.
Tu ne peux pas mettre un contenu Date dans un contenant de type string.
Il faut donc convertir le contenu afin de l'afficher dans le contenant.
Ex.:
C'est l'instruction CStr qui converti ici le contenu date en contenu string.
J'ai fait simple ici et je n'ai pas vérifier l'effet de la transformation, il est
probable qu'il y ait un formatage à faire pour obtenir la date au format souhaité.
Donc toujours garder en tête que le contenu et le contenant doivent
obligatoirement être de même type.
Astuce : Pour conserver une date au format texte dans une cellule, introduire un apostrophe.
ActiveCell.Value = " '2018-02-19 "
Les espaces ne sont qu'a titre de clarté du texte => "'2018-02-19"
La cellule conservera sont type string (i.e. texte).
K
Observations :
1.) Ce classeur contient beaucoup de plages nommées. Pour pouvoir décortiquer le tout
il faut connaître ces plages nommées.
Recommandation : Créer une nouvelle feuille Excel et rouler la macro ci-dessous pour avoir
une liste des plages nommées avec les adresses correspondantes.
Public Sub ListeNoms_OrdreFeuilles() Dim NomPlage As Name Dim PlageNom As Range Dim Boucle As Integer Dim NumLigne As Integer NumLigne = 1 On Error Resume Next For Boucle = 1 To Worksheets.Count For Each NomPlage In Worksheets(Boucle).Parent.Names Set PlageNom = Nothing Set PlageNom = NomPlage.RefersToRange If Not PlageNom Is Nothing Then If Worksheets(Boucle).Index = PlageNom.Worksheet.Index Then Cells(NumLigne, 1).Value = NomPlage.Name Cells(NumLigne, 2).Value = NomPlage.RefersToRange.Value Cells(NumLigne, 3).Value = NomPlage.RefersToRange.Address Worksheets(1).Hyperlinks.Add Anchor:=Cells(NumLigne, 4), _ Address:="", SubAddress:=NomPlage.RefersToRange.Address(external:=True) NumLigne = NumLigne + 1 End If End If Next NomPlage Next Boucle End Sub
2.) Le problème d'affichage de Dates
Sour VBA, comme avec tous les langages que j'ai utilisé à ce jour, il faut distinguer
le contenant du contenu.
Un combobox est un contenant.
Une date est un contenu.
Or sous VBA un combobox est un contenant qui n'accepte qu'un contenu string.
Une date n'est pas un contenu string, c'est un contenu date.
La propriété RowSource du combobox10 pointe sur une plage nommé "ListeDate" et
les cellules de cette plage sont au format "Date". Il y a incompatibilité de type.
Tu ne peux pas mettre un contenu Date dans un contenant de type string.
Il faut donc convertir le contenu afin de l'afficher dans le contenant.
Ex.:
Private Sub InitCombo_10() Dim PlageNomme As String Dim Cellule As Range Dim DateSelectionne As Date For Each Cellule In Sheets("DATA").Range("ListeDate") DateSelectionne = Cellule.Value If (DateSelectionne <> "00:00:00") Then cbxDateReception.AddItem CStr(DateSelectionne) End If Next Cellule End Sub
C'est l'instruction CStr qui converti ici le contenu date en contenu string.
J'ai fait simple ici et je n'ai pas vérifier l'effet de la transformation, il est
probable qu'il y ait un formatage à faire pour obtenir la date au format souhaité.
Donc toujours garder en tête que le contenu et le contenant doivent
obligatoirement être de même type.
Astuce : Pour conserver une date au format texte dans une cellule, introduire un apostrophe.
ActiveCell.Value = " '2018-02-19 "
Les espaces ne sont qu'a titre de clarté du texte => "'2018-02-19"
La cellule conservera sont type string (i.e. texte).
K
Passionofdream
Messages postés
820
Date d'inscription
mardi 21 juillet 2015
Statut
Membre
Dernière intervention
11 mai 2021
304
Modifié le 20 févr. 2018 à 16:19
Modifié le 20 févr. 2018 à 16:19
Bonjour
Pour le format date dans les combobox vous pouvez essayer ceci
End Sub
Ceci dit votre USF aurait besoin d'être redéfini à mon avis en le simplifiant.
Essayez de mieux définir ce que vous souhaitez obtenir
Pour le format date dans les combobox vous pouvez essayer ceci
Private Sub ComboBox12_Change() ComboBox12.Value = CDate(ComboBox12.Value)
End Sub
Ceci dit votre USF aurait besoin d'être redéfini à mon avis en le simplifiant.
Essayez de mieux définir ce que vous souhaitez obtenir
HIBISCUS988
Messages postés
31
Date d'inscription
jeudi 9 février 2017
Statut
Membre
Dernière intervention
15 mars 2018
1
21 févr. 2018 à 09:55
21 févr. 2018 à 09:55
Merci beaucoup, je teste tout ça en espérant que ça va fonctionner.
Cordialement,
Cordialement,
Kalissi
Messages postés
218
Date d'inscription
jeudi 2 mai 2013
Statut
Membre
Dernière intervention
15 juillet 2019
20
21 févr. 2018 à 01:08
21 févr. 2018 à 01:08
Bonjour,
Étape 2 :
Sur la feuille DATA
Dans la cellule G3, détruire la fonction que tu as installé.
Dans l'éditeur de VB, créer un nouveau module que tu pourras renommer Fonctions.
Ajoute cette fonction dans ce module :
Repositionne toi sur la cellule G3
Ajoute une fonction, dans la liste déroulante (Ou sélectionné une catégorie) , choisir [ Personnalisées ]
Ajoute la fonction DateDujour.
Tu auras un message, mais n'en tiens pas compte.
Dans la liste déroulante de tes dates de ton userform, la date s'affiche maintenant correctement.
K
Étape 2 :
Sur la feuille DATA
Dans la cellule G3, détruire la fonction que tu as installé.
Dans l'éditeur de VB, créer un nouveau module que tu pourras renommer Fonctions.
Ajoute cette fonction dans ce module :
Option Explicit ' Public Function DateDuJour() As String Dim DateJour As Date Dim ChaineDate As String Application.Volatile DateJour = Now ChaineDate = Format(DateJour, "yyyy-MM-dd") DateDuJour = ChaineDate End Function '
Repositionne toi sur la cellule G3
Ajoute une fonction, dans la liste déroulante (Ou sélectionné une catégorie) , choisir [ Personnalisées ]
Ajoute la fonction DateDujour.
Tu auras un message, mais n'en tiens pas compte.
Dans la liste déroulante de tes dates de ton userform, la date s'affiche maintenant correctement.
K
HIBISCUS988
Messages postés
31
Date d'inscription
jeudi 9 février 2017
Statut
Membre
Dernière intervention
15 mars 2018
1
21 févr. 2018 à 10:26
21 févr. 2018 à 10:26
Bonjour Kalissi,
1) J'ai suivi tes instruction, mais, il se produit un beug lorsque j'exécute mon formulaire. Ca bloque au niveau du mot "Format" de la fonction DateDuJour. Impossible d'aller plus loin.
Aujourd'hui, j'ai dupliqué mon fichier en faisant d'autres essais, entre autre, j'ai supprimé tous les combobox "date" en les remplaçant par des listbox. Pour les 2 combobox "date" qui me servaient à faire mes calculs de délais (date de réception) et (délai de traitement) dans DATA.
Je les ai remplacés chacun par 3 listbox, 1 pour le JOUR, 1 pour le MOIS et l'autre pour l'ANNEE. Ensuite j'ai bidouillé sur ma feuille excel en concaténant les 3 cellules destinataires des 2x3 listbox pour obtenir une cellule "date" au bon format. J'ai réussi à reproduire ce que je voulais mais j'aime pas trop la méthode "bricolage" utilisée. J'aimerai bien y arriver avec ta proposition ... Si tu peux me dire ce qui ne va pas pour débloquer l'exécution de l'userform.
2) Je me suis aperçue qu'en modifiant Les listes de la feuille DATA, pour une raison de confidentialité, j'ai provoqué des beug dans mes combobox (listes déroulantes dépendantes). J'ai passé toute la journée à reprendre ligne par ligne toutes les plages nommées. Sur les 15 références "enveloppes" qui ne fonctionnaient plus, il m'en reste toujours 2 qui bloquent.J'ai donc repris mon fichier d'origine en y reprenant tout ce qui avait été fait sur le fichier test.
3) J'ai remplacé ma listview par une listbox car j'ai trouvé des tutos qui m'ont permis d'afficher dans mon userform les colonnes Excel que je souhaitais.
J'avance doucement et je te remercie une fois encore pour ton aide. Si tu as une proposition pour débloquer le beug llié à la fonction DateDuJour, je suis preneuse.
Merci.
1) J'ai suivi tes instruction, mais, il se produit un beug lorsque j'exécute mon formulaire. Ca bloque au niveau du mot "Format" de la fonction DateDuJour. Impossible d'aller plus loin.
Aujourd'hui, j'ai dupliqué mon fichier en faisant d'autres essais, entre autre, j'ai supprimé tous les combobox "date" en les remplaçant par des listbox. Pour les 2 combobox "date" qui me servaient à faire mes calculs de délais (date de réception) et (délai de traitement) dans DATA.
Je les ai remplacés chacun par 3 listbox, 1 pour le JOUR, 1 pour le MOIS et l'autre pour l'ANNEE. Ensuite j'ai bidouillé sur ma feuille excel en concaténant les 3 cellules destinataires des 2x3 listbox pour obtenir une cellule "date" au bon format. J'ai réussi à reproduire ce que je voulais mais j'aime pas trop la méthode "bricolage" utilisée. J'aimerai bien y arriver avec ta proposition ... Si tu peux me dire ce qui ne va pas pour débloquer l'exécution de l'userform.
2) Je me suis aperçue qu'en modifiant Les listes de la feuille DATA, pour une raison de confidentialité, j'ai provoqué des beug dans mes combobox (listes déroulantes dépendantes). J'ai passé toute la journée à reprendre ligne par ligne toutes les plages nommées. Sur les 15 références "enveloppes" qui ne fonctionnaient plus, il m'en reste toujours 2 qui bloquent.J'ai donc repris mon fichier d'origine en y reprenant tout ce qui avait été fait sur le fichier test.
3) J'ai remplacé ma listview par une listbox car j'ai trouvé des tutos qui m'ont permis d'afficher dans mon userform les colonnes Excel que je souhaitais.
J'avance doucement et je te remercie une fois encore pour ton aide. Si tu as une proposition pour débloquer le beug llié à la fonction DateDuJour, je suis preneuse.
Merci.
Kalissi
Messages postés
218
Date d'inscription
jeudi 2 mai 2013
Statut
Membre
Dernière intervention
15 juillet 2019
20
21 févr. 2018 à 01:11
21 févr. 2018 à 01:11
J'ai oublié.
Il te faut sélectionné de nouveau la date dans l'un des combobox pour que celle-ci s'affiche correctement.
K
Il te faut sélectionné de nouveau la date dans l'un des combobox pour que celle-ci s'affiche correctement.
K
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Kalissi
Messages postés
218
Date d'inscription
jeudi 2 mai 2013
Statut
Membre
Dernière intervention
15 juillet 2019
20
21 févr. 2018 à 14:18
21 févr. 2018 à 14:18
Bonjour,
En effet, j'ai oublié une étape ... désolé...
Donc, à partir du fichier d'origine ...
1.) Dans la plage [ ListeDate ], modifier le format de toutes les cellules pour le format [ Standard ]
2.) Détruire la formule dans la cellule G3
3.) Copier la petite fonction DateDuJour ci-haut dans un module
4.) Ajouter la nouvelle fonction à la cellule.
Étangement j'ai la même erreur avec Excel 2013, erreur que je n'ai pas avec Excel 2002.
Je vais devoir creusé.
K
En effet, j'ai oublié une étape ... désolé...
Donc, à partir du fichier d'origine ...
1.) Dans la plage [ ListeDate ], modifier le format de toutes les cellules pour le format [ Standard ]
2.) Détruire la formule dans la cellule G3
3.) Copier la petite fonction DateDuJour ci-haut dans un module
4.) Ajouter la nouvelle fonction à la cellule.
Étangement j'ai la même erreur avec Excel 2013, erreur que je n'ai pas avec Excel 2002.
Je vais devoir creusé.
K
Kalissi
Messages postés
218
Date d'inscription
jeudi 2 mai 2013
Statut
Membre
Dernière intervention
15 juillet 2019
20
21 févr. 2018 à 15:01
21 févr. 2018 à 15:01
re:
Dans l'immédiat, cette version-ci fonctionne :
VBA et les dates, c'est toujours spécial. Même sous VB.NET je dois parfois faire des pirouettes pour valider différents formats de dates.
K
Dans l'immédiat, cette version-ci fonctionne :
Option Explicit ' Public Function DateDuJour() As String Dim DateJour As Date Dim ChaineDate As String Dim Mois As String Dim Jour As String Application.Volatile DateJour = Now Mois = CStr(Month(DateJour)) If (Len(Mois) = 1) Then Mois = ("0" & Mois) End If Jour = CStr(Day(DateJour)) If (Len(Jour) = 1) Then Jour = "0" & Jour End If ChaineDate = (Year(DateJour) & "-" & Mois & "-" & Jour) DateDuJour = ChaineDate End Function '
VBA et les dates, c'est toujours spécial. Même sous VB.NET je dois parfois faire des pirouettes pour valider différents formats de dates.
K
HIBISCUS988
Messages postés
31
Date d'inscription
jeudi 9 février 2017
Statut
Membre
Dernière intervention
15 mars 2018
1
22 févr. 2018 à 06:55
22 févr. 2018 à 06:55
Bonjour Kalissi,
Alors les dates s'affichent effectivement correctement dans le formulaire. Par contre, ces combobox "date" renseignent les cellules E10, E13 et F13 de la feuille DATA, qui servent à faire les calculs de délais. Les dates malheureusement sont recopiées dans le mauvais format, du coup les calculs sont faussés. J'ai essayé pas mal de choses, mais j'avoue que je bloque encore. Si tu as une idée ça résoudrait déjà un problème.
J'essaie d'alterner car si je passe trop de temps sur un blocage, je n'avance plus, donc en parallèle je tente de résoudre les petits beugs qui apparaissent mais franchement je ne suis pas sortie de l'auberge avec ce fichier... En tous cas je te remercie beaucoup de prendre sur ton temps pour m'aider.
Alors les dates s'affichent effectivement correctement dans le formulaire. Par contre, ces combobox "date" renseignent les cellules E10, E13 et F13 de la feuille DATA, qui servent à faire les calculs de délais. Les dates malheureusement sont recopiées dans le mauvais format, du coup les calculs sont faussés. J'ai essayé pas mal de choses, mais j'avoue que je bloque encore. Si tu as une idée ça résoudrait déjà un problème.
J'essaie d'alterner car si je passe trop de temps sur un blocage, je n'avance plus, donc en parallèle je tente de résoudre les petits beugs qui apparaissent mais franchement je ne suis pas sortie de l'auberge avec ce fichier... En tous cas je te remercie beaucoup de prendre sur ton temps pour m'aider.
Kalissi
Messages postés
218
Date d'inscription
jeudi 2 mai 2013
Statut
Membre
Dernière intervention
15 juillet 2019
20
Modifié le 22 févr. 2018 à 15:00
Modifié le 22 févr. 2018 à 15:00
Bonjour,
Je comprends bien la problématique.
Des solutions il y en a ... au départ il aurait été souhaitable d'effectuer une encapsulation des données.
Je veux dire de structurer les données et répliquer cette modélisation dans le code.
Il est clair qu'on ne pense pas à tous cela du premier coup. Il y a plus de trente ans que je développe,
et ce n'est pas venue tout seul.
Donc, voici ma proposition, à toi de voir si celle ci te parait trop complexe.
Sous VB.NET, je dérive les objets c'est plus simple, mais en VBA il te faudrait apprendre à
travailler avec les modules de classe et ce serait probablement trop d'un seul coup.
La solution alternative est de passer par les structures (i.e. les types).
Tous les éléments de ton formulaire doivent demeurer des éléments d'affichage.
1.) Première étape, structurer tes données, dans un module spécifique, créé les structures
Exemple :
2.) Comprendre comment travaillé avec la(es) structure(s)
Exemple :
3.) Créer des fonctions personnaliser qui traite l'information afficher dans les éléments
du formulaire de façon a placer dans les cellules les valeurs adéquates.
La cellule contient une valeur, cette valeur est déposé par programmation dans la structure
dans la partie calcul (i.e. zStruc.DtDevis.CalculDateDevis), par programmation tu transforme
cette valeur en chaine de caractères pour l'affichage (i.e. zStruc.DtDevis.AfficherDateDevis = CStr(zStruc.DtDevis.CalculDateDevis). Et ainsi dans le combobox on obtient combobox.additem(zStruc.DtDevis.AfficherDateDevis).
C'est ce que l'on appelle l'encapsulation. Chaque élément n'est accédé que par une et une seule méthode.
Un accès lecture et un accès écriture. Une fois la structure défini et les méthodes de lecture/écriture de la structure défini, ça devient un charme de travaillé avec le tout.
Je vais te pondre une méthode qui renseigne une cellule à partir de la valeur d'un combobox, elle sera semblable à la fonction DateDuJour.
K
Je comprends bien la problématique.
Des solutions il y en a ... au départ il aurait été souhaitable d'effectuer une encapsulation des données.
Je veux dire de structurer les données et répliquer cette modélisation dans le code.
Il est clair qu'on ne pense pas à tous cela du premier coup. Il y a plus de trente ans que je développe,
et ce n'est pas venue tout seul.
Donc, voici ma proposition, à toi de voir si celle ci te parait trop complexe.
Sous VB.NET, je dérive les objets c'est plus simple, mais en VBA il te faudrait apprendre à
travailler avec les modules de classe et ce serait probablement trop d'un seul coup.
La solution alternative est de passer par les structures (i.e. les types).
Tous les éléments de ton formulaire doivent demeurer des éléments d'affichage.
1.) Première étape, structurer tes données, dans un module spécifique, créé les structures
Exemple :
Option Explicit ' ' Décrlaration de type ' Public Type StReception AfficherDateReception As String CalculDateReception As Date End Type Public Type StDevis AfficherDateDevis As String CalculDateDevis As Date End Type Public Type StFacture AfficherDateFacture As String CalculDateFacture As Date Montant As Double End Type Public Type StructureGlobal DtReception As StReception DtDevis As StDevis DtFacture As StFacture End Type ' ' ' Déclaration de variable globale ' Public Traitement As StructureGlobal
2.) Comprendre comment travaillé avec la(es) structure(s)
Exemple :
Public Function CalculMontant(ByRef zStruc As StructureGlobal) As StructureGlobal Dim NbrJours As Integer Dim DateDeb As Date Dim DateFin As Date DateDeb = zStruc.DtDevis.CalculDateDevis DateFin = zStruc.DtReception.CalculDateReception NbrJours = 0 While DateDeb < DateFin NbrJours = (NbrJours + 1) DateDeb = DateAdd("d", 1, DateDeb) Wend zStruc.DtFacture.Montant = NbrJours * (Montant * 0.5) CalculMontant = zStruc End Function '
3.) Créer des fonctions personnaliser qui traite l'information afficher dans les éléments
du formulaire de façon a placer dans les cellules les valeurs adéquates.
La cellule contient une valeur, cette valeur est déposé par programmation dans la structure
dans la partie calcul (i.e. zStruc.DtDevis.CalculDateDevis), par programmation tu transforme
cette valeur en chaine de caractères pour l'affichage (i.e. zStruc.DtDevis.AfficherDateDevis = CStr(zStruc.DtDevis.CalculDateDevis). Et ainsi dans le combobox on obtient combobox.additem(zStruc.DtDevis.AfficherDateDevis).
C'est ce que l'on appelle l'encapsulation. Chaque élément n'est accédé que par une et une seule méthode.
Un accès lecture et un accès écriture. Une fois la structure défini et les méthodes de lecture/écriture de la structure défini, ça devient un charme de travaillé avec le tout.
Je vais te pondre une méthode qui renseigne une cellule à partir de la valeur d'un combobox, elle sera semblable à la fonction DateDuJour.
K
Kalissi
Messages postés
218
Date d'inscription
jeudi 2 mai 2013
Statut
Membre
Dernière intervention
15 juillet 2019
20
Modifié le 22 févr. 2018 à 15:24
Modifié le 22 févr. 2018 à 15:24
voici ce que ça donne :
1.) Travailler sans les structures :
Dans un module nommé Fonctions :
2.) Travailler avec les structures
Dans un module nommé Fonctions :
K
1.) Travailler sans les structures :
Private Sub Combobox10_Change() DATA.Range("e10").Value = Fonctions.DeterminerDateArriveeSansStructure(ComboBox10.Text) DATA.Range("e13").Value = ListBox2.Value 'transfert nombre de jours "arrivée" dans feuille DATA DATA.Range("f13").Value = ListBox3.Value 'transfert délai de traitement dans feuille DATA End Sub '
Dans un module nommé Fonctions :
Public Function DeterminerDateArriveeSansStructure(ByVal zDate As String) As Date Dim Valeur As String Dim DateReel As Date Valeur = zDate DateReel = CDate(Valeur) DeterminerDateArriveeSansStructure = DateReel End Function '
2.) Travailler avec les structures
Private Sub Combobox10_Change() Traitement.DtReception.AfficherDateReception = ComboBox10.Text Traitement = Fonctions.DeterminerDateArriveeAvecStructure(Traitement) DATA.Range("e10").Value = Traitement.DtReception.CalculDateReception DATA.Range("e13").Value = ListBox2.Value 'transfert nombre de jours "arrivée" dans feuille DATA DATA.Range("f13").Value = ListBox3.Value 'transfert délai de traitement dans feuille DATA End Sub '
Dans un module nommé Fonctions :
Public Function DeterminerDateArriveeAvecStructure(ByRef zStruc As StructureGlobal) As StructureGlobal Dim Valeur As String Dim DateReel As Date Valeur = zStruc.DtReception.AfficherDateReception DateReel = CDate(Valeur) zStruc.DtReception.CalculDateReception = DateReel DeterminerDateArriveeAvecStructure= zStruc End Function '
K
Kalissi
Messages postés
218
Date d'inscription
jeudi 2 mai 2013
Statut
Membre
Dernière intervention
15 juillet 2019
20
22 févr. 2018 à 16:58
22 févr. 2018 à 16:58
Bonjour,
Dans les faits, travailler avec une structure revient à ceci :
Trois éléments de travail :
Un formulaire d'affichage (ou une feuille Excel servant d'affichage)
Une structure d'éléments
Une feuille de calcul
1.) Les informations transit de la feuille de calcul à la structure et termine dans le formulaire.
Lecture :
Feuille Excel -> Traitement -> Formulaire
Donnée de calcul -> Calcul et Conversion -> Données d'affichage
2.) Les informations transit du formulaire à la structure et termine dans la feuille de calcul.
Écriture :
Formulaire -> Traitement -> Feuille Excel
Donnée d'affichage -> Calcul et Conversion -> Données de calcul
Référence : Structure de données 101 (Modélisation)
K
Dans les faits, travailler avec une structure revient à ceci :
Trois éléments de travail :
Un formulaire d'affichage (ou une feuille Excel servant d'affichage)
Une structure d'éléments
Une feuille de calcul
1.) Les informations transit de la feuille de calcul à la structure et termine dans le formulaire.
Lecture :
Feuille Excel -> Traitement -> Formulaire
Donnée de calcul -> Calcul et Conversion -> Données d'affichage
2.) Les informations transit du formulaire à la structure et termine dans la feuille de calcul.
Écriture :
Formulaire -> Traitement -> Feuille Excel
Donnée d'affichage -> Calcul et Conversion -> Données de calcul
Référence : Structure de données 101 (Modélisation)
K
HIBISCUS988
Messages postés
31
Date d'inscription
jeudi 9 février 2017
Statut
Membre
Dernière intervention
15 mars 2018
1
26 févr. 2018 à 16:14
26 févr. 2018 à 16:14
Bonsoir Kalissi,
Je te remercie infiniment pour ton aide, malheureusement je me suis littéralement noyée dans tes dernières instructions , j'ai bossé tout le week end, en vain, je n'y suis pas arrivée.
Etant pressée par ma hiérarchie, j'ai donc continué sur mon fichier test pour ne pas perdre de temps. J'avance petit à petit mais j'ai toujours du mal à comprendre la logique du développement VBA, je ne sais pas où placer les codes, quels termes employer, et pourtant j'ai imprimé des tonnes de cours trouvés sur le net ...
Si tu es toujours d'accord pour m'aider, j'aimerai comprendre pourquoi certains de mes codes VBA ne fonctionnent pas, notamment pour l'affichage des cases : facture arrivée depuis (ListBox2), délai de traitement (ListBox3), code (TextBox1), N° dossier (TextBox2) et N° tiers (TextBox4). En parallèle, certaines de mes cellules de ma base de données ne sont pas renseignées par mon formulaire, malgré les codes insérés. J'aimerai pouvoir obtenir le même résultat que l'affichage de la case EURO de mon formulaire, qui se fait instantanément.
J'aimerai pouvoir réussir à passer cette étape pour m'atteler aux boutons de commandes RECHERCHER et MODIFIER, sachant que je vais encore me griller quelques neurones à chercher des solutions, mes compétences en programmation VBA étant quasiment nulles.
Je te remercie d'avance pour ton aide précieuse. Ci-joint mon fichier test
https://www.sendbox.fr/index.php?/63605d496d10e95e/TABLEAU-GESTION-BUDGETAIRE-DERNIERTEST.xls
Je te remercie infiniment pour ton aide, malheureusement je me suis littéralement noyée dans tes dernières instructions , j'ai bossé tout le week end, en vain, je n'y suis pas arrivée.
Etant pressée par ma hiérarchie, j'ai donc continué sur mon fichier test pour ne pas perdre de temps. J'avance petit à petit mais j'ai toujours du mal à comprendre la logique du développement VBA, je ne sais pas où placer les codes, quels termes employer, et pourtant j'ai imprimé des tonnes de cours trouvés sur le net ...
Si tu es toujours d'accord pour m'aider, j'aimerai comprendre pourquoi certains de mes codes VBA ne fonctionnent pas, notamment pour l'affichage des cases : facture arrivée depuis (ListBox2), délai de traitement (ListBox3), code (TextBox1), N° dossier (TextBox2) et N° tiers (TextBox4). En parallèle, certaines de mes cellules de ma base de données ne sont pas renseignées par mon formulaire, malgré les codes insérés. J'aimerai pouvoir obtenir le même résultat que l'affichage de la case EURO de mon formulaire, qui se fait instantanément.
J'aimerai pouvoir réussir à passer cette étape pour m'atteler aux boutons de commandes RECHERCHER et MODIFIER, sachant que je vais encore me griller quelques neurones à chercher des solutions, mes compétences en programmation VBA étant quasiment nulles.
Je te remercie d'avance pour ton aide précieuse. Ci-joint mon fichier test
https://www.sendbox.fr/index.php?/63605d496d10e95e/TABLEAU-GESTION-BUDGETAIRE-DERNIERTEST.xls
Passionofdream
Messages postés
820
Date d'inscription
mardi 21 juillet 2015
Statut
Membre
Dernière intervention
11 mai 2021
304
11 mars 2018 à 17:43
11 mars 2018 à 17:43
Bonsoir,
Tu as résolu ton problème ou as tu encore besoin d'aide.
Impossible de récupérer ton fichier, ça fonctionne mieux par
https://www.cjoint.com/
1) Tu vas dans https://www.cjoint.com/
2) Tu cliques sur [Parcourir] pour sélectionner ton fichier
3) Tu descends en bas de la page pour cliquer sur [Créer le lien Cjoint]
4) Au bout de quelques secondes la deuxième page s'affiche, avec le lien
en bleu souligné ; tu le sélectionnes et tu fais "Copier"
5) Tu reviens dans ta discussion sur CCM, et dans ton message de réponse
tu fais "Coller"
Tu as résolu ton problème ou as tu encore besoin d'aide.
Impossible de récupérer ton fichier, ça fonctionne mieux par
https://www.cjoint.com/
1) Tu vas dans https://www.cjoint.com/
2) Tu cliques sur [Parcourir] pour sélectionner ton fichier
3) Tu descends en bas de la page pour cliquer sur [Créer le lien Cjoint]
4) Au bout de quelques secondes la deuxième page s'affiche, avec le lien
en bleu souligné ; tu le sélectionnes et tu fais "Copier"
5) Tu reviens dans ta discussion sur CCM, et dans ton message de réponse
tu fais "Coller"
HIBISCUS988
Messages postés
31
Date d'inscription
jeudi 9 février 2017
Statut
Membre
Dernière intervention
15 mars 2018
1
15 mars 2018 à 21:16
15 mars 2018 à 21:16
Bonjour passionofdream,
J'avance doucement dans mon projet, ce n'est pas facile mais ça me passionne donc je m'accroche et quand je n'arrive pas d'une façon j'essaie de faire autrement, en même temps j'ai pas trop le choix ...
J'avance doucement dans mon projet, ce n'est pas facile mais ça me passionne donc je m'accroche et quand je n'arrive pas d'une façon j'essaie de faire autrement, en même temps j'ai pas trop le choix ...
Passionofdream
Messages postés
820
Date d'inscription
mardi 21 juillet 2015
Statut
Membre
Dernière intervention
11 mai 2021
304
16 mars 2018 à 11:41
16 mars 2018 à 11:41
Peux tu mettre ton fichier ici pour voir où tu en es et te donner un coup de main éventuel
19 févr. 2018 à 20:49
Merci infiniment d'avoir pris le temps de me répondre.
Je ne sais pas si j'ai bien compris tes instructions, je vais déjà répertorier toutes mes cellules nommées et mettre le nouveau fichier en ligne.
K
20 févr. 2018 à 16:14
Effectivement l'USF utilise de nombreuses références et il serait peut être souhaitable de simplifier en redéfinissant ce que vous souhaitez obtenir par cet USF.
Comme indiqué par Kalissi, les combobox "n'aiment" pas le format date.
Cependant vous pouvez tester ceci
Private Sub ComboBox12_Change() ComboBox12.Value = CDate(ComboBox12.Value) End Sub
par exemple.
Cordialement
21 févr. 2018 à 09:55
Cordialement,