"débutant" sous excel ... - VB/VBA/VBS - Programmation
Marsh Posté le 27-03-2006 à 20:57:44
petit up ... pas eu le temps de regarder pour les macros
... personne pour me dire où c'est que je déconne ?
Marsh Posté le 28-03-2006 à 11:18:25
j'ai eu la flemme de tout lire, mais tu pourrais surement gerer mieux avec du VBA !
Fais ALT+F11 ! Selectionnes l'évènement "Change".
Private Sub Worksheet_Change(ByVal Target As Range) |
L'objet Target désigne l'endroit que tu viens de quitter. Donc euh, si tu pointes la case A1 et que tu passes a la case A2, Target.Row vaudra 1, puis si tu pointes A3, Target.Row vaudra 2... J'te dis ca car je connais pas exactement ton niveau en VBA, moi meme j'en connaissais pas des masses il y a 3 jours (merci Epéna ).
La fonction Ucase (que je connais de VB.NET) sert a passer tout les caracteres d'une chaine en majuscules.
Donc la, sur l'evenement "changement de case", si la colonne que tu as quitté est celle des prénoms (chose commune en cas de validation de saisie), alors la valeur (value) de la cellule de la ligne quittée, colonne prénom (cells(target.row, <numero de la colonne des noms)) sera égale a ce qu'elle était avant, apres un Ucase (passage en majuscules).
Apres pour ton email composé tu peux faire un Lcase genre comme ca :
Cells(Target.Row, <numero de la colonne des emails> ).Value = Lcase(Cells(Target.Row, <numero de la colonne des prenoms> ).Value) & "." & Lcase(Cells(Target.Row, <numero de la colonne des noms> ).Value) & "@nomdedomaine.com" |
Apres il te faudra une fonction pour regarder dans la case "Cells(Target.Row, <numero de la colonne des prenoms> ).Value" pour voir si tu as des prénoms composés, ou tes cas spéciaux...
Si tu es perdu, dis toujours, j'veux bien t'aider !
Dernier conseil : si tu ne connais pas le code de quelquechose (passage en arial par exemple ), j'ai lu ce précieux conseil que je te refile : Enregistre une macro ! Le code de la macro est inscrit en VBA dans un fichier qui est "module1" par défaut... Comme ca tu peux regarder les méthodes et les propriétés des objets que tu veux modifier. Apres tu réécris le tout dans un code plus propre !
Marsh Posté le 28-03-2006 à 20:47:54
ok, merci, j'étudie tout ça dès que j'ai un peu de temps au boulot
jme disais bien qu'excel en lui-meme était un peu limité pour ce que je voulais faire, va falloir passer par un peu plus costaud
FtY
Marsh Posté le 24-03-2006 à 23:03:10
Bonjour,
j'espère que je poste dans la bonne question, je sais pas trop si ce topic n'aurait pas plus sa place dans soft et rézo section logiciel
et je sais pas trop si VB/VBA/VBS c la meilleure catégorie ... désolé si je gaffe
en fait, j'aimerais avoir les lumières de gens qui pratique la "programmation" excel depuis un bout de temps, car je trouve excel vraiment pas pratique pour ce que je veux faire, et ça m'étonne, donc je me dis que je dois mal le faire
j'ai donc une liste de mes utilisateurs sous excel, organisée comme suis :
col A - col B - col C - col D - col E
nom - prénom - mot de passe messagerie - adresse email - remarque
mes emails sont de la forme <première lettre de chaque prénom(*)>.nom@société.fr
(*) : pierre = p; jean-marie = jm
j'aimerais en fait faire plusieurs choses :
ce que j'ai fait pour ça :
autre chose, j'ai des noms composés ou à particule, dans le cas de noms avec particule ("de truc", "di chose" ), je voulais juste supprimer l'espace. merci SUPPRESPACE ... enfin presque ... au final, SUBSTITUE(<macellule>; " "; "" ).
j'ai aussi un ou deux noms composés ("prénom machin de truc" ), et je veux juste garder "truc" ... malheureusement, ceux-là, je pense que je vais les conserver à gérer au cas par cas, car aussi bien le prochain il voudra conserver juste "machin" ...
SI(est_majuscule(<macellule> ); <macelllule>; NOMPROPRE(<macellule> )) et remplacer le contenu de "macellule" par le résultat de cette fonction.
J'ai aussi le cas de un ou deux prénoms (évelyne, éloi ...) qui commencent par une voyelle accentuée ... et j'ai l'impression que ça me met pas la voyelle en majuscule. faudrait que je remplace l'accent (ou la cédille) par la lettre correspondante avant de passer la moulinette, en fait
j'ai mon prénom sous la forme que je voulais. je me suis donc dit qu'il me suffisait de virer toutes les minuscules, les "-" des prénoms composés et les espaces des prénoms doubles de ma cellule "Prénom" pour ne garder que les "initiales" (= les majuscules). comme ça, si j'écris un truc tout en majuscule, ça ne me vire rien, et comme j'ai des tas de prénoms composés ou doubles, je peux pas utiliser des fonction style "DROITE" ou "GAUCHE" qui tronquent à la hache dans la chaine de caractère.
sauf que, pour virer les minuscules, j'ai rien trouvé de mieux que SUBSTITUE(<macellule>; "<lettre minuscule>"; "" ) en imbriquant ... ça donne : SUBSTITUE( ... SUBSTITUE(SUBSTITUE(<macellule>; "a"; "" ); "b"; "" ) ... ; "z"; "" )
sauf qu'excel ne supporte pas plus de 7 niveaux d'imbrication, j'en suis donc à 4 colonnes monopolisées pour le traitement de mon prénom (j'élimine "a" jusqu'à "z", " ", "-", "é", "ë", "ç", "è" ). ça marche, mais bon
au final, je fais un truc style CONCATENER(SI(<cellule du prénom>="";"";CONCATENER(MINUSCULE(<cellule des initiales du prénom> );"." ));MINUSCULE(<cellule du nom> );"@société.fr" ), et ça ça me gène pas que la formule reste dans la cellule, contrairement aux colones nom et prénom.
donc en fait, questions :
c pour le boulot et j'ai pas eu le temps de regarder l'aide sur les macros. si ça se fait facilement avec une macro, je verrai ça lundi.
tant que j'y suis, si en plus je pouvais préciser dans la formule que je veux le nom en arial 12 gras et le prénom en arial 10 gras ... j'ai pas vu si c'était possible de préciser ça, je pense que oui, je regarde lundi.
pour le moment, déja si je trouvais un moyen d'alléger les traitements sur le prénom ... ya pas une fonction comme SUBSTITUE mais qui pourrait prendre plusieurs chaines à supprimer dans la chaine principale ? ... des expressions régulières ?
merci de m'avoir lu jusqu'au bout et merci pour toute aide que vous pourriez m'apporter.
EDIT : j'oubliais la jocefeature ( ) qui transforme " et ) en
FtY
Message édité par misato le 27-03-2006 à 20:57:08
---------------
shibboleet ! - HADOPI vous a plu ? Vous allez adorer la LOPPSI ! - generation NT bande de criminels inconscients !