[Résolu] Codage personnalisé - Vos remarques

Lone-wolf

XLDnaute Barbatruc
Bonjour à tous, (désolé pour l'oubli :eek:)

Je suis tombé sur le code de Silkyroads qui proposait d'afficher dans un MsgBox les informations sur une personne déjà inscrite dans le code.

J'ai mis la main à la pâte (comme on dit) :) et je l'ai modifié comme suis:

Feuil1 Colonne X

Code:
Sub InfosContact()
Dim n$(1 To 5) 
Dim r&(1 To 2) 
Dim dn As Date

n(1) = [X1].Value   'Civilité
n(2) = [X2].Value   'Nom
n(3) = [X3].Value   'Adresse
r(1) = [X4].Value   'Code postal
n(4) = [X5].Value   'Ville
dn = [X6].Value      'Date de naissance
n(5) = [X7].Value   'Etat Civil
r(2) = [X8].Value    'Nombre d'enfants

Infos n(1), n(2), n(3), r(1), n(4), dn, n(5), r(2)
End Sub
_____________________________________________________________________

Sub Infos(n1 As String, n2 As String, n3 As String, r1 As Long, _
n4 As String, dn As Date, n5 As String, r2 As Long)

 UserForm1.Label1.Caption = "Bonjour !" & vbCrLf & vbCrLf & 
"Vous êtes " & n1 & " " & n2 & vbCrLf & vbCrLf & _ 
"Vous habitez " & " " & n3 & vbCrLf & vbCrLf & _ 
r1 & " " & n4 & vbCrLf & vbCrLf & _
"Né le " & Format(dn, "dd.mm.yyyy") & vbCrLf & vbCrLf & _
n5 & "," & " " & r2 & " " & "enfants"
End Sub

Qu'en pensez-vous?


A+ :cool:
 
Dernière édition:

JNP

XLDnaute Barbatruc
Re : Codage personnalisé - Vos remarques

Re :),
Sur Silkyroads le code était plus ou moins ainsi:
Ceci sans formulaire ni Label. Est-ce plus clair maintenant?
Pas plutôt comme ceci
Code:
Sub InsererContact()
Const ConcactNom As String = "Wolf"
Const ContactPrénom As String = "Lone"
Const ContactAdresse As String = "CPN Laxou" & vbCrLf & "1, rue Archambault"
Const ContactCP As String = "54520" ' Code postal - Parce que les département de 01 à 09 perdraient le 0...
Const ContactVille As String = "LAXOU"
Const ContactDateNaissance As Date = "01/01/2011"
InfosContact Nom, Prénom, Adresse, etc.
Bonne soirée :cool:
 

Lone-wolf

XLDnaute Barbatruc
Re : Codage personnalisé - Vos remarques

Je vien de cliquez sur le lien, c'est bien ça.
C'est le lien précédant (Silkyroads) qui ma conduit à celui de Pierre Fauconnier. Désolé pour le lapsus.

Pourquoi préfères-tu passer par un userform ?

C'est que je vois tellement de tests passer par les MsgBox...
alors je change(Je ne veux pas manger tous les jours des spaghettis, si tu vois ce que je veux dire. ;) )


JNP c'est n'importe quoi, ("Dieu pardonne-leur parce-que ils ne savent pas ce qu'ils disent, n'y ce qu'ils font.")

Voici le code que j'ai pris:

Code:
Sub UtiliserContact()
    Dim ContactNom As String
    Dim ContactPrenom As String
    Dim ContactAdresse As String
    Dim ContactCP As String
    Dim ContactLocalite As String
    Dim ContactDateNaissance As Date
    
    ContactNom = "Fauconnier"
    ContactPrenom = "Pierre"
    ContactAdresse = "20, Jevoumont"
    ContactCP = "4910"
    ContactLocalite = "Theux"
    ContactDateNaissance = DateSerial(1966, 12, 26)
    
    AfficherMessageContact ContactNom, ContactPrenom, ContactAdresse, _
        ContactCP, ContactLocalite, ContactDateNaissance
End Sub

Sub AfficherMessageContact(Nom As String, Prenom As String, Adresse As String, _
    CP As String, Localite As String, DateNaissance As Date)
    MsgBox "Bonjour " & Prenom & " " & Nom & "." & vbCrLf & _
        "Vous habitez " & Adresse & " à " & CP & " " & Localite & "." & vbCrLf & _
        "Vous êtes né le " & Format(DateNaissance, "dddd dd mmmm yyyy"), vbOKOnly, "Salutations"
End Sub

Où tu vois Const???


A+ :cool:
 
Dernière édition:

JNP

XLDnaute Barbatruc

JNP

XLDnaute Barbatruc
Re : Codage personnalisé - Vos remarques

Re :),
JNP c'est n'importe quoi, ("Dieu pardonne-leur parce-que ils ne savent pas ce qu'ils disent, n'y ce qu'ils font.")
Où tu vois Const???
Désolé, je suis trop plié (de rire) pour appuyer correctement sur les touches :eek:...
Le tuto donné par JM, explique que ce n'est pas une façon intelligente d'utiliser VBA, et qu'il est plus intérressant d'utiliser des modules de Classe, et toi, tu reprends le code exemple de ce qu'il ne faut pas faire pour le développer :p...
Effectivement, mon attitude n'est pas très "chrétienne", mais si "au pays des aveugles, les borgnes sont rois", là, tu es plutôt du côté "heureux les simples d'esprit" :eek:...
Bonne soirée :cool:
 

Lone-wolf

XLDnaute Barbatruc
Re : Codage personnalisé - Vos remarques

JNP T'as pété les plombs!

Dieu pardonne-leur parce-que ils ne savent pas ce qu'ils disent, n'y ce qu'ils font.

III-A. Manipulation des données d'un contact sans utilisation d'un type personnalisé.

Si je souhaite manipuler les données d'un contact, je dois déclarer autant de variables que j'ai de données (champs) pour mon contact, puis leur attribuer les données de mon contact, et enfin les utiliser, par exemple au sein d'une procédure qui affiche un message à l'écran.

T'as bien lu j'éspère, sinon achète une autre paire de lunettes.

Ce que Pierre propose est un macro (d'accord, pas la meilleure) simple (si j'ose dire) et une macro avec module de classe.

Moi j'ai pris la macro simple juste pour voir, ensuite je me suis rappelé d'un précédent post et j'ai modifié le code.



A+ :cool:
 
Dernière édition:

JNP

XLDnaute Barbatruc
Re : Codage personnalisé - Vos remarques

Re :),
T'as bien lu j'éspère, sinon achète une autre paire de lunettes.

Ce que Pierre propose est un macro (d'accord, pas la meilleure) simple (si j'ose dire) et une macro avec module de classe.

Moi j'ai pris la macro simple juste pour voir, ensuite je me suis rappelé d'un précédent post et j'ai modifié le code.
J'ai bien lu, mais jusqu'au bout :rolleyes:...
La macro simple n'est qu'un exemple pour imager son propos, je ne vois pas en quoi ton code l'améliore, mais bon, pourquoi pas, si ça te fait plaisir :rolleyes:...
Allez, sans rancune, et essaie de lire le tuto jusqu'au bout, tu verras que les Classe sont une richesse inestimable :p...
 

Lone-wolf

XLDnaute Barbatruc
Re : Codage personnalisé - Vos remarques

Rebonjour Stapple, JNP

Voici la Classe éditée par Pierre, ici je l'ai abregée:

Code:
Option Explicit
Private mNom As String
Private mPrenom As String
____________________________

Property Get Nom() As String
    ' Propriété en lecture
    Nom = mNom
End Property

Property Let Nom(Nom As String)
    ' Propriété en écriture
    mNom = UCase(Nom)
End Property

Property Get Prenom() As String
    ' Propriété en lecture
    Prenom = mPrenom
End Property

Property Let Prenom(Prenom As String)
    ' Propriété en écriture
    mPrenom = UCase(Prenom)
End Property

Au lieu d'avoir 10 lignes pour chaque propriété (Lecture-Ecriture)

Est-ce que l'on peut codé ainsi:

Code:
' Propriété en lecture
Property Get Civilite() As String, Nom() As String, Prenom() As String etc.

Civilite = mCivilite
Nom = mNom
Prenom = mPrenom
End Property

' Propriété en écriture
Property Let Civilite(Civilite As String), Nom(Nom As String), Prenom(Prenom As String)

mCivilite = (Civilite)
mNom = UCase(Nom)
mPrenom = UCase(Prenom)
End Property


A+ :cool:
 
Dernière édition:

JNP

XLDnaute Barbatruc
Re : Codage personnalisé - Vos remarques

Re :),
Au lieu d'avoir 10 lignes pour chaque propriété (Lecture-Ecriture)

Est-ce que l'on peut codé ainsi:

Code:
' Propriété en lecture
Property Get Civilite() As String, Nom() As String, Prenom() As String etc.
 
Civilite = mCivilite
Nom = mNom
Prenom = mPrenom
End Property
 
' Propriété en écriture
Property Let Civilite(Civilite As String), Nom(Nom As String), Prenom(Prenom As String)
 
mCivilite = (Civilite)
mNom = UCase(Nom)
mPrenom = UCase(Prenom)
End Property
Non, je ne pense pas vu que l'intérêt du module de classe est par exemple le traitement de la String au passage comme expliqué dans la partie
IV-C-6-a-ii. Contrôle de la saisie du nom en vue de sa modification
Par contre, si tu veux éviter toutes les entrées sorties, tu peux passer par Type qui se suffit à lui-même :rolleyes:...
Code:
Type cContact
        Nom As String
        Prenom As String
        Adresse As String
        CP As Integer
        Localite As String
        DateNaissance As Date
        Sexe As String
End Type
Sub UtiliserContact()
    Dim Contact As cContact
 
    With Contact
        .Nom = "Fauconnier"
        .Prenom = "Pierre"
        .Adresse = "20, Jevoumont"
        .CP = "4910"
        .Localite = "Theux"
        .DateNaissance = DateSerial(1966, 12, 26)
        .Sexe = "masculin"
    End With
 
    AfficherMessageContact Contact
End Sub
Sub AfficherMessageContact(Contact As cContact)
    With Contact
        MsgBox "Bonjour " & .Prenom & " " & .Nom & "." & vbCrLf & _
            "Vous habitez " & .Adresse & " à " & .CP & " " & .Localite & "." & vbCrLf & _
            "Vous êtes né le " & Format(.DateNaissance, "dddd dd mmmm yyyy") & ".", vbOKOnly, "Salutations"
    End With
End Sub
Mais encore une fois, ce n'est pas le but du tuto au départ :p...
Bonne suite :cool:
 

Lone-wolf

XLDnaute Barbatruc
Re : [Résolu] Codage personnalisé - Vos remarques

Mais encore une fois, ce n'est pas le but du tuto au départ

Encore une fois, je le sais JNP.

J'ai lu sur le Forum, qu'il était plus indiqué d'avoir un code court ou abrégé, plutôt que d'avoir des centaines de lignes. Je pensais qu'il en était de même pour les Modules de Classes.

Merci pour ton exemple.


A+ :cool:
 

JNP

XLDnaute Barbatruc
Re : [Résolu] Codage personnalisé - Vos remarques

Re :),
J'ai lu sur le Forum, qu'il était plus indiqué d'avoir un code court ou abrégé, plutôt que d'avoir des centaines de lignes. Je pensais qu'il en était de même pour les Modules de Classes.
Il en est de même pour les modules de classe, vu que le but est d'éviter des répétitions de code :rolleyes:...
Alors effectivement, c'est un peu long dans le codage de base, mais plus court dans le reste :p...
Exemple courant : un seul module de Classe pour l'événement Change des TextBox permet de coder une seule fois, même si tu as 20 ou 30 TextBox :rolleyes:...
A + :cool:
 

MJ13

XLDnaute Barbatruc
Re : [Résolu] Codage personnalisé - Vos remarques

Bonjour à tous

Mes remarques :).

Il faut peut être se dire que "essayer de comprendre des choses complexes, c'est pour les autres".

Après Lone, tu peux essayer de coder comme un pro, mais le mieux est d'y aller piano et de ne faire que ce que tu comprends.


En 2008, j'ai rerouvé une discussion avec JM d'ailleurs :), sur les modules de classe, dont il Il y en a sur le forum qui sont spécialisés. Après 3 ans, j'en ai pas eu vraiment besoin, donc, je ne les ai pas trop utilisé.

https://www.excel-downloads.com/threads/usf-date-en-module-de-classe.94168/

D'aileur je me suis aperçu sur le dernier fichier, que les dates s'inversent dans certains cas (ah le fameux bug des dates inversées :eek:). Eh bien aujourdui, je ne saurais même pas comment le contourner :confused:.

Autre chose:

J'ai lu sur le Forum, qu'il était plus indiqué d'avoir un code court ou abrégé, plutôt que d'avoir des centaines de lignes. Je pensais qu'il en était de même pour les Modules de Classes.

Alors la, c'est ce que j'appelle du matraquage intellectuel. Qu'il y ait 10 lignes ou 1000 lignes, le principal, c'est que ton programme tourne assez rapidement sans bugs :).
 

Discussions similaires

Statistiques des forums

Discussions
312 500
Messages
2 089 004
Membres
104 003
dernier inscrit
adyady__