"débutant" sous excel ...

"débutant" sous excel ... - VB/VBA/VBS - Programmation

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 :jap:
 
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 :
 

  • transformer tous les noms en majuscule (y compris automatiquement les nouveaux saisis)


  • mettre les prénoms sous forme "Prénom", "Prénom-Composé" ou "Double Prénom" (toujours si possible de manière automatique sur les nouveaux saisis). et prévoir les cas spécifiques où il n'y a pas de prénom et où le prénom me sert pour autre chose (par exemple <ville>.<nomchantier>lot<numérolot> ), auquel cas, quand je tape le prénom entièrement en majuscules, il ne me le met pas en forme.


  • écrire automatiquement mes adresses emails en fonction du nom et du prénom.


 
ce que j'ai fait pour ça :
 

  • utilisation fonction "MAJUSCULE" => ça m'oblige à récupérer le résultat dans une colone à part. j'aimerais écraser la colone originale avec celle réécrite en majuscule. et ça ne me met pas automatiquement les nouveaux noms en majuscules :/

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 :o ... 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" ... [:spamafote]
 

  • utilisation fonction "NOMPROPRE" => pareil + j'ai pas trouvé de fonction "est_majuscule" qui renverrais "vrai" si son argument est une chaine de caractères composée uniquement de lettres en majuscules. car j'aimerais faire un truc dans le style :

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 [:idee]
 

  • pour l'email, enfin, j'ai un énorme soucis :

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"; "" ) :ouch:
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 :
 

  • ya pas moyen d'abréger un peu le traitement pour les prénoms ? parce que du coup, je prévois pas les cas où le prénom commence par une voyelle accentuée, et j'aime pas ne pas prévoir tous les cas :lol: !, et "sacrifier" 4 colones pour ça me parait un tantinet bourrin :whistle:.


  • je vois dans l'aide qu'il ne faut surtout pas faire une formule qui aurait pour résultat elle-même ... je fais comment pour passer ma formule dans ma colone alors ? :??:

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 :whistle: ... 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 [:pinzo] ?
 
merci de m'avoir lu jusqu'au bout et merci pour toute aide que vous pourriez m'apporter.
 
EDIT : j'oubliais la jocefeature ( :whistle: ) 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 !
Reply

Marsh Posté le 24-03-2006 à 23:03:10   

Reply

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 ?


Message édité par misato le 27-03-2006 à 21:00:15

---------------
shibboleet ! - HADOPI vous a plu ? Vous allez adorer la LOPPSI ! - generation NT bande de criminels inconscients !
Reply

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)
 
If Target.Column = <numero de la colonne des noms> Then Cells(Target.Row, <numero de la colonne des prénoms> ).Value = Ucase(Cells(Target.Row, <numero de la colonne des noms> ).Value)

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 !


Message édité par kennybis le 28-03-2006 à 11:27:14
Reply

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 :D
 
FtY


---------------
shibboleet ! - HADOPI vous a plu ? Vous allez adorer la LOPPSI ! - generation NT bande de criminels inconscients !
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed