Interaction utilisateur et macro - VB/VBA/VBS - Programmation
Marsh Posté le 07-10-2008 à 21:19:00
Salut, une approche VBA Excel à adapter à ton contexte http://www.excel-downloads.com/for [...] france.zip
sinon sans Excel http://www.fobec.com/protec/logici [...] hp3?id=181
Marsh Posté le 08-10-2008 à 14:27:44
Merci beaucoup pour ces liens, mais je crains hélas de ne pas avoir suffisamment de compétences pour savoir l'adapter à mon cas de figure
Je voudrais à partir d'une liste dans Excel: "Nom" "Prénom" "Adresse" "Code Postal" "Ville", insérer une colonne avec la région qui correspond au Code Postal saisi.
ex: si code postal = 31000, insérer la valeur "Midi Pyrénées" dans une nouvelle colonne
N'ayant que peu de connaissance en VBA, je patauge un peu dans la semoule
Marsh Posté le 08-10-2008 à 14:56:01
Bonjour
Pas besoin de vba pour faire ca. Enfin en fonction de ton dernier exemple.
Il te suffit de saisir tes régions par département en liste (De H à K) un peu plus loin sur la feuille (ou dns une autre feuille), par exemple en commencant en H2 (1ere ligne contenant l'entete)
La liste se trouve sur google en 2sc et demi. Sans liste tu ne peux rien faire ou presque. Les CP sont pas ordres Alpha et les régions par découpage Géo... Aucun lien entre eux si ce n'est si tu fais un tableau de concordance.
Je pars du principe que nom, prenom, adresse, cp et ville sont respectivement dans les colonne A,B,C, D et E et donc que la région viendra en F. La 1ere ligne contenant les entete de colonne.
En F2:
=RECHERCHEV(GAUCHE(D2;2);H:K;4;FAUX)
Je te joins ce fichier, ca t'aidera surement
Marsh Posté le 08-10-2008 à 15:18:13
Effectivement, c'est une très bonne solution pour pallier à mon problème!
J'ai réussi néanmoins à me débrouiller pour écrire un ti bout de code, qui fonctionne très bien (mais qui risque peut être d'en faire hurler certains lol):
Citation : Sub RepRegion() |
Et comme j'aime bien les challenges, j'aimerais bien aller au bout de mon ti script et lui donner vie! Histoire d'apprendre
Mon seul problème (j'ai abandonné l'idée de la fenêtre interactive utilisateur pour sélectionner une plage de cellule) se situe ici:
Range("E2:E100" ).Select
Ici ma plage de sélection ne va que jusqu'à 100 et pour éviter d'avoir des tas de "REGION NON DEFINIE" vide si je n'ai que 30 lignes dans mon fichier, je voudrais pouvoir, en sélectionnant les données sur le tableau, faire une récupération de cette plage.
Ex: un truc qui correspondrait à une fonction que je pourrais appeler (si elle existait ) : "Range(CurrentUser.Select)"
Des idées pour moi?
Marsh Posté le 08-10-2008 à 15:24:47
Regardes tes Messages Privés.
Bah pour recuperer la selection active, c'est 'Selection'
Donc tu degages ton 'Range("E2:E100" ).Select' et c'est tout
Marsh Posté le 08-10-2008 à 15:34:51
C'est peut etre plus lisible comme ca :
Citation : Sub RepRegion() |
Voila, il te suffit de sélectionner ce que tu veux, genre de E2 à E20 et de lancer la macro, il ne te fera la maj que de G2 à G20 (redéfinition de ta variable a par la ligne de la premiere cellule de la selection active : a=Cell.Row). J'ai enlevé les range.select. Car forcement ta selection active, apres un range.select, change.
Attention toutefois je n'ai pas testé pour des cellules non adjacentes.
Marsh Posté le 08-10-2008 à 15:59:07
AAAhhh, c'était aussi facile que ça?! pffff je suis trop nulle
Merci beaucoup en tout cas! pour cette soluce et pour l'optimisation!
Afin de proposer les 2 solutions à la personne qui va se servir de ça, je tente du coup de faire marcher l'équivalent de ton fichier excel (recherchev) mais ça ne marche pas chez moi
Mon compte FTP ne marche provisoirement plus alors je ne peux pas te montrer mon ti fichier
Mais en gros, j'ai mes codes postaux en colonne D et la liste des départements (Département, Région) sur la Feuille2 (nommée Répart)
J'applique la fonction: =RECHERCHEV(GAUCHE(D2;2);Répart!A:B;2;FAUX)
et rien ... j'ai un ti #N/A sans que je sache pourquoi
Marsh Posté le 08-10-2008 à 16:07:37
J'ai edité ma macro pour ajouter la definition de la variable 'a', surement entre temps ou tu ecrivais. Reverifie que tu as bien la bonne version de la macro.
#N/A veut dire qu'il ne trouve pas de concordance.
Mais sans le fichier sous les yeux, j'ai un peu de mal a te dire pourquoi...
Les code département de Répart et les codes postaux de ta feuille1 sont bien au format texte ? (tu as bien '01' aligné a gauche pour l'ain ou '01000' pour le CP ?)
Le Nom de la Région est en B de la feuille Répart et le code département en A ?
Marsh Posté le 08-10-2008 à 16:40:11
La macro fonctionne parfaitement bien, j'ai juste supprimer mon Range(E2:E100) et tout roule comme ça
Pour le fichier, le voici ICI
J'arrive pas à voir ce que j'ai mal fait...
en F2, c'est en récupérant le tableau de correspondance "Département - Région" sur la feuille Répart
et en F3, c'est avec celui sur la droite en H:I de la même feuille.
J'ai bien vérifié que tout soit bien en format texte et rien à faire, je vois pas pourquoi ça marche pas
Marsh Posté le 08-10-2008 à 17:08:05
Sheeris a écrit : La macro fonctionne parfaitement bien, j'ai juste supprimer mon Range(E2:E100) et tout roule comme ça |
Il faut aussi réinitialiser ta variable 'a' sinon tu mettras a jour toujours a partir de la ligne 2. La avec ma macro, si tu selectionne que E20 il met a jour que G20, si tu selectionnes de E5 à E200 il met a jour que de G5 à G200
Sheeris a écrit : J'arrive pas à voir ce que j'ai mal fait... |
Tu n'as pas lu mon message jusqu'au bout
SuppotDeSaTante a écrit : "Les code département de Répart et les codes postaux de ta feuille1 sont bien au format texte ? (tu as bien '01' aligné a gauche pour l'ain ou '01000' pour le CP ?) " |
Toi tu n'as pas de '0' pour l'ain '01'
De plus, il faut que ta colonne de reference (celle des codes departements) soit triée.
Ensuite, apparament le format de ta colonne des codes départements est merdique (Surement a cause d'un copié collé). Je te l'ai reconstruite, celle de Répart
Fichier ici
[edit]il te manque des codes départements, le 27 et le 28 notamment.(Eure, Eure et loire) [/edit]
Marsh Posté le 08-10-2008 à 17:30:12
En fait, j'ai appliqué le format Texte sur mes cellules, elles s'affichaient bien avec le 01 mais en rentrant dans la cellule, effectivement, la valeur était = à 1
j'ai vu qu'en rajoutant le une simple côte dans tout le tableau Dépt / Region, tout rentrait dans l'ordre!
Un gros gros merci pour ton aide et ta patience (et pour l'info des dpt 27 et 28 !! bravo le coup d'oeil )
Marsh Posté le 08-10-2008 à 18:56:43
Reply
Marsh Posté le 07-10-2008 à 17:37:46
Bonjour à tous!
Après de vaines recherches, je me tourne vers vous en désespoir de cause!
J'ai besoin de faire une macro dans Excel (avec mes toutes petites connaissances de lilipucienne!) qui puisse me faire la chôse suivante:
D'après une liste de code postaux, déterminer à quelle région est rattacher à un code postal, dans une nouvelle colonne.
Mais il faudrait que je puisse laisser à l'utilisateur déterminer la plage de cellules des codes postaux à travailler, vu que cette macro va servir sur des listes avec des lignes très variables (pouvant aller de 100 à 20000 lignes)
Ex: une fenêtre qui invite à "Sélectionner la plage de cellules à transformer"
Siouplait... Vous auriez pas une astuce pour moi?