Test login et traitement | ||
---|---|---|
Inscription: 14/01/2010
Messages:
10
Système d'exploitation: PC Version Excel utilisée: 2003,2007 |
Posté le : 18-01-2010 09h12
Bonjour,
J'ai mis en place dans mon classeur le module suivant qui récupère le login du PC Function login() As String login = Application.UserName End Function je voudrais définir en fonction de ce login 4 cas en fonction de 4 utilisateurs une série de 6 données fixes afin de les afficher sur l'onglet du classeur automatiquement voici les données (4 possibilités pour chaque) Prénom NOM Téléphone Fax Initiales J'ai essayé d'utiliser la méthode case au lieu de else if mais je n'y arrive pas merci de votre aide Gilles |
|
|
Re: Test login et traitement | ||
---|---|---|
Inscription: 18/05/2006
De Saône-et-Loire (71)
Messages:
1539
Système d'exploitation: PC Version Excel utilisée: 97, 2000, 2002, 2003, 2007, 2010, 2013, 2016 et 365 |
Posté le : 18-01-2010 17h30
Bonjour vg00, le Forum,
Compte tenu de l'explication fournie, pour faire simple et pour 4 cas seulement : DANS UN MODULE DE CODE STANDARD (exemple : Module1) Option Explicit Cordialement, Didier_mDF
Le Webmaster La réponse vous satisfait ? Merci de revenir solder le sujet en [résolu], voir ce lien |
|
|
Re: Test login et traitement | ||
---|---|---|
Inscription: 14/01/2010
Messages:
10
Système d'exploitation: PC Version Excel utilisée: 2003,2007 |
Posté le : 18-01-2010 18h07
C'est une très bonne réponse mais je n'en doutais pas vu le contenu du forum
j'ai donc adapté à mon besoin ce qui au final donne ceci sur l'écriture dans le xls If Prenom <> "" Then With Sheets(1) .Cells(11, 2).Value = Prenom & " " & Nom .Cells(12, 2).Value = "Tél : " & Tel .Cells(13, 2).Value = "Fax : " & Fax .Cells(8, 9).Value = Initiales mais sur cette dernière ligne (soit en I8) mon besoin est plus compliqué et l'on retrouve en partie le post http://www.mdf-xlpages.com/modules/ne ... c_id=502&post_id=3108 dans lequel je décrivais le souhait d'aller inscrire à cet emplacement un numéro trouvé dans le fichier V:\COTATIONS\COTATIONS 2010.xls au format AAAA-NNNN ou AAAA est en général l'année en cours et AAAA un numéro incrémentiel de 1 en 1 exemple partons d'un fichier vide je voudrais en cliquant sur le xlt que mon fichier inscrive dans le fichier cotation ces informations ( | représentant un changement de colonne) 2010-0001 | valeur de A8 de l'onglet Offre | Valeur de L16 | Valeur de K11 | Initiales et enregistre mon fichier ainsi 2010-0001C si l'on continue l'exemple j'espère ne pas trop demandé et être à peu près clair Gilles |
|
|
Re: Test login et traitement | ||
---|---|---|
Inscription: 18/05/2006
De Saône-et-Loire (71)
Messages:
1539
Système d'exploitation: PC Version Excel utilisée: 97, 2000, 2002, 2003, 2007, 2010, 2013, 2016 et 365 |
Posté le : 18-01-2010 22h34
Re,
Si j'ai bien compris la demande, tu peux remplacer le module de code par celui-ci : Option Explicit Attention, je n'ai mis aucun contrôle d'erreur dans ce code (cellules vides, Date en A8 mal saisie, etc....). A toi de gérer ces erreurs ou omissions éventuelles de l'utilisateur. Cordialement, Nb: merci d'utiliser la balise de Code pour insérer du Code VBA (ou même une formule) dans tes posts du forum. Pour rappel : Didier_mDF
Le Webmaster La réponse vous satisfait ? Merci de revenir solder le sujet en [résolu], voir ce lien |
|
|
Re: Test login et traitement | ||
---|---|---|
Inscription: 14/01/2010
Messages:
10
Système d'exploitation: PC Version Excel utilisée: 2003,2007 |
Posté le : 19-01-2010 11h27
Bonjour,
C'est super bien rédigé ça m'avance franchement par contre il faudrait juste que l'enregistrement du fichier soit effectuer de manière automatique dans le répertoire V:\COTATIONS\ plutôt que d'être obligé de lancer la macro INITOffre et ne donne pas la main à l'utilisateur au niveau de l'enregistrement sauf si le répertoire réseau n'est pas accessible Par rapport au besoin global une fois ceci réglé un grand pas sera déja franchi du coup j'aborderai la suite du besoin à savoir : intégrer avant enregistrement de l'offre le choix du client j'entends par choix la mise en place initial d'un fichier CLIENT.XLS à mon avis toujours dans le répertoire V:\COTATIONS avec consultation sans ouverture du fichier pour choix parmi liste existante possibilité de modifier ou d'ajout un client avec ces informations choix : vide / M. / Mme / Mlle par coche NOM (obligatoire) PRENOM (facultatif) Téléphone fixe Téléphone portable (au moins un téléphone parmi les deux) Fax (facultatif) SOCIETE puis importation des données dans l'offre et à ce moment écriture dans COTATIONS 2010.XLS d N° offre (2010-0104 par exemple) | Date récupérée dans cellule A8 détaillé plus bas | SOCIETE | valeur de choix (vide / M / MMe / Mlle) | rien | Initiales (provenant du VBA case ...) | enregistrement de l'offre seulement à ce moment la pus reprise de la main pour ajouter des lignes dans l'offre j'aimerais dans COTATIONS 2010.XLS soit ajouter une colonne soit faire en sorte qu'en cliquant sur la première cellule de chaque ligne ouvrir le fichier correspondant en donnant le choix d'ouvrir le fichier 2010-0104C.XLS ou 2010-0104C.PDF merci de me dire si c'est possible Merci de votre aide précieuse et très constructive. PS : code pour obtention de la date que j'ai mis dans thisworkbook mais ça peut certainement être amélioré Private Sub Workbook_Open() Gilles |
|
|
Re: Test login et traitement | ||
---|---|---|
Inscription: 18/05/2006
De Saône-et-Loire (71)
Messages:
1539
Système d'exploitation: PC Version Excel utilisée: 97, 2000, 2002, 2003, 2007, 2010, 2013, 2016 et 365 |
Posté le : 21-01-2010 00h52
Bonsoir vg00,
Citation : vg00 a écrit : Désolé vg00, mais ça ne veut rien dire. Un enregistrement automatique, oui, mais quand ? Sur quel évènement ? Sur quelle action utilisateur ? Par ailleurs, je te rappelle que c'est la procédure InitOffre() qui détermine la nouvelle référence d'offre, donc la sauvegarde ne peut se faire qu'à postériori... A toutes fins utiles, tu déclencheras la sauvegarde du document par : ThisWorkbook.SaveAs "V:\COTATIONS" & LeNomDuFichier 'Sauvegarde l'offre Citation : vg00 a écrit : Mise à part le fait que je n'ai pas tout compris dans tes explications, je me dois déjà de t'avertir vg00 : 1) Pour rappel, Excel est avant tout un tableur et j'ai dans l'idée que ta perception de ce projet va un peu au-delà du raisonnable en terme d'automatisme et d'interaction entre fichiers divers... la multiplication des fichiers multiplie d'autant les difficultés de développement. Et pour peu que tu veuilles partager ce(s) document(s) sur réseau, je pense que tu cours à l'échec au final, c'est presque garanti. 2) Pour rappel encore, les Forums de discussions du présent site n'ont pas pour objet de réaliser et rendre des commandes d'application "clé en main". Tu trouveras sur le net d'autres forums Excel dans lesquels ces demandes sont visiblement acceptées et sans doute bien réalisées. Mais ce n'est pas l'objectif sur le site XLpages.com qui ne s'intéresse qu'aux échanges à valeur pédagogique. Citation : vg00 a écrit : Tu peux échanger ton code par celui-ci : Private Sub Workbook_Open() ... cela dit, je ne vois pas l'intérêt de ce code VBA à vrai dire. Autant mettre directement la formule suivante dans la cellule A8 : =AUJOURDHUI() Cordialement, Didier_mDF
Le Webmaster La réponse vous satisfait ? Merci de revenir solder le sujet en [résolu], voir ce lien |
|
|
Re: Test login et traitement | ||
---|---|---|
Inscription: 14/01/2010
Messages:
10
Système d'exploitation: PC Version Excel utilisée: 2003,2007 |
Posté le : 04-01-2012 14h51
Bonjour, je cherche toujours à optimiser ce code contenu dans cotation.xlt
1) l'adresse mail est toujours identique suivant les 4 cas de log 2) la récupération du log machine n'est pas terribles j'ai du aller modifier l'utilisateur déclaré d'excel 2007 d'un collègue 3) l'effacement total des macros n'est pas pleeinement efficace il reste du code et à l'ouverture du fichier sauvegardé j'ai quand même la question voulez vous activer les macros alors que voudrais que le fichier n'en comporte plus ! 4) à l'ouverture je souhaiterais utiliser un mini formulaire demandant la saisie Société : Contact : Téléphone : Portable : Fax : Mail : 5) compléter les 2 onglets offre et offre PV voir un suivant Offre AC qui viendra à la manière la macro ci dessous mais je n'ai pas réussi à bien modifier If Nom <> "" Then With Sheets(1) .Cells(10, 3).Value = Nom .Cells(11, 3).Value = Tel .Cells(12, 3).Value = Fax .Cells(13, 3).Value = Mail .Cells(7, 10).Value = Initiales 6) après sauvegarde et juste avant fermeture fichier ou impression Remplissage de 2 onglets (structure identique de l'entête)pour l'instant d'autres éventuels à venir 1er onglet : Offre 2ème onglet : Offre PV Société en M15 Contact en K10 L11 = concaténer(téléphone / portable) Fax : L12 Mail : K13 7) et cerise sur le gâteau serait d'aller compléter le fichier cotation2012.xls comme suit définition de la ligne à remplir 2012-0001 doit écrire en ligne x donc x=0001+1 et ainsi de suite -en Dx venir mettre la date de création du fichier qui doit être figer par la macro afin que lorsque l'on ouvre après sauvegarde la date ne change plus - en Fx : Société - en Gx : Contact - en Ix : les deux dernières lettre de la variable initiales si le fichier cotation2012.xls est ouvert renvoyer un message voyez avec (utilisateur du fichier) pour qu'il vous laisse l'accès et réessayer si la ligne ou l'on souhaite écrire n'est pas vide ? je ne sais pas il vaut mieux passer une ligne mais ??? 8) on peut aussi définir le lieux de sauvegarde du fichier qui est le répertoire réseau d'ouverture du xlt 9) la sauvegarde pourrait elle aussi être inteligente obligatoire en xls pas de xlsx... et le 2012-000x fixé par test de présence de fichier dans répertoire et test de dernier remplissage dans le fichier cotation2012... 10) remplacer le 2011 de la macro par une variable de l'année en cours Si quelqu'un est interessé on pourras essayer de scinder les différents axes pour faire évoluer cela ---- Option Explicit Function login() As String login = Application.UserName End Function Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) Dim StartLine As Long, LineCount As Long 'Tu insères ton code ici que tu veux exécuter à l'ouverture 'd'un nouveau classeur basé sur le modèle. 'Ce qui suit efface toute la procédure événementielle "Workbook_Open" On Error Resume Next If ThisWorkbook.Path = "" Then If ThisWorkbook.VBProject.Protection Then Exit Sub With ThisWorkbook.VBProject.VBComponents("ThisWorkbook").CodeModule StartLine = .ProcStartLine("Workbook_Open", 0) If StartLine Then LineCount = .ProcCountLines("Workbook_Open", 0) .DeleteLines StartLine, LineCount End If End With End If End Sub Private Sub Workbook_Open() ' DateduJour Macro ' Sheets("Offre").Range("B7").Value = Date Dim Nom As String, Tel As String, Fax As String, Mail As String, Initiales As String Select Case login Case "xxxxxxxx" Nom = "xxxxxxxx" Tel = "Tél : xxxxxxxx" Fax = "Fax : xxxxxxxx" Mail = "a.a@a.a" Initiales = "2011-0000C/xx" Case "yyyyyyyy" Nom = "yyyyyyyy" Tel = "Tél : yyyyyyyy" Fax = "Fax : yyyyyyyy" Mail = "a.a@a.a" Initiales = "2011-0000C/yy" Case "zzzzzzz" Nom = "zzzzzzz" Tel = "Tél : zzzzzzz" Fax = "Fax :zzzzzzz" Mail = "a.a@a.a" Initiales = "2011-0000C/zz" Case "wwwwwww" Nom = "wwwwwww" Tel = "Tél : wwwwwww" Fax = "Fax : wwwwwww" Mail = "a.a@a.a" Initiales = "2011-0000C/ww" Case Else MsgBox "Login non répertorié" End Select If Nom <> "" Then With Sheets(1) .Cells(10, 3).Value = Nom .Cells(11, 3).Value = Tel .Cells(12, 3).Value = Fax .Cells(13, 3).Value = Mail .Cells(7, 10).Value = Initiales End With End If End Sub
Edité par vg00 le 04/01/2012 15:22:20
|
|
|
Vous pouvez voir les sujets.
Vous ne pouvez pas débuter de nouveaux sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.
Qui consulte actuellement ce sujet ?
1 Utilisateur(s) anonymes