Affecter une valeur en fonction de la zone géographique [Résolu]

Messages postés
7
Date d'inscription
vendredi 4 novembre 2011
Statut
Membre
Dernière intervention
4 novembre 2011
- - Dernière réponse : ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
- 4 nov. 2011 à 17:22
Bonjour,

Je souhaiterais en fonction du code postal, affecter une zone climatique. J'ai fais un truc assez simpliste, mais ca ne marche pas :s
J'ai mis la fonction left comme ceci :

Dep = Left(Range("AI" & i).Text, 2)

Pour qu'il sélectionne les deux premiers caractéres du code postal situé en AI mais ca ne marche pas !

Comment dois-je m'y prendre ?
Afficher la suite 

18 réponses

Meilleure réponse
Messages postés
1241
Date d'inscription
mardi 10 octobre 2006
Statut
Membre
Dernière intervention
27 août 2013
3
3
Merci
Bonjour,

ça ne marche pas c'est un peu vague comme description. Tu as un message d'erreur?ou bien simplement que ça ne t'affiche ou récupère pas les 2 chiffres que tu veux?

Juste avec cette ligne difficle de t'aider tu pourrais poster un peu plus de code vu que tu as l'air d'être dans une boucle (variable i..)


L'expérience, c'est une connerie par jour, mais jamais la même..

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 211 internautes nous ont dit merci ce mois-ci

Commenter la réponse de lolokun
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
214
3
Merci
Bonjour,
qu'est-ce qui ne "marche pas" ?
ton code retournera forcément les 2 premiers caractères de la cellule de ligne i et de colonne AI de la feuille active !
et qu'entends-tu par "sélectionner" les deux premiers caractères ?

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 211 internautes nous ont dit merci ce mois-ci

Commenter la réponse de ucfoutu
Messages postés
7
Date d'inscription
vendredi 4 novembre 2011
Statut
Membre
Dernière intervention
4 novembre 2011
3
Merci
Lorsque je lance le programme pas par pas, je vois que Dep (que j'ai déclaré en String) affiche Dep ="" quoi que je fasse ... Alors que (Range("AI" & i).Text, 2) affiche bien la valeur rentrée dans la cellule

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 211 internautes nous ont dit merci ce mois-ci

Commenter la réponse de restecool80
Messages postés
7
Date d'inscription
vendredi 4 novembre 2011
Statut
Membre
Dernière intervention
4 novembre 2011
3
Merci
Voilà ce que j'ai rentré pour l'instant



Public Dep As String


Dep = Left(Range("AI" & i).Text, 2)
If Dep "14" Or Dep "61" Or Dep = "27" Or Dep = "28" Or Dep = "76" Or Dep = "80" Or Dep = "62" Or Dep = "59" Or Dep = "02" Or Dep = "60" Or Dep = "95" Or Dep = "78" Or Dep = "91" Or Dep = "77" Or Dep = "92" Or Dep = "93" Or Dep = "94" Then Feuil2.zone = 1
ElseIf Dep "08" Or Dep "51" Or Dep = "10" Or Dep = "45" Or Dep = "89" Or Dep = "58" Or Dep = "52" Or Dep = "55" Or Dep = "54" Or Dep = "57" Or Dep = "88" Or Dep = "70" Or Dep = "67" Or Dep = "68" Then Feuil2.zone = 2
ElseIf Dep "25" Or Dep "36" Or Dep = "21" Or Dep = "71" Or Dep = "01" Or Dep = "74" Or Dep = "73" Or Dep = "05" Or Dep = "38" Or Dep = "69" Or Dep = "42" Or Dep = "43" Or Dep = "03" Or Dep = "63" Or Dep = "23" Or Dep = "87" Or Dep = "19" Or Dep = "15" Then Feuil2.zone = 3
ElseIf Dep "29" Or Dep "22" Or Dep = "56" Or Dep = "35" Or Dep = "50" Then Feuil2.zone = 4
ElseIf Dep "44" Or Dep "85" Or Dep = "17" Or Dep = "16" Or Dep = "79" Or Dep = "86" Or Dep = "36" Or Dep = "18" Or Dep = "41" Or Dep = "37" Or Dep = "49" Or Dep = "72" Or Dep = "53" Then Feuil2.zone = 5
ElseIf Dep "33" Or Dep "40" Or Dep = "64" Or Dep = "65" Or Dep = "09" Or Dep = "31" Or Dep = "32" Or Dep = "81" Or Dep = "82" Or Dep = "12" Or Dep = "46" Or Dep = "24" Or Dep = "47" Then Feuil2.zone = 6
ElseIf Dep "48" Or Dep "07" Or Dep = "26" Or Dep = "84" Or Dep = "04" Then Feuil2.zone = 7
ElseIf Dep "66" Or Dep "11" Or Dep = "34" Or Dep = "30" Or Dep = "13" Or Dep = "83" Or Dep = "06" Or Dep = "20" Then Feuil2.zone = 8
End If

If Feuil2.zone = 1 Then
Sheets("Feuil2").Cells(i, "AI") = "H1a"
ElseIf Feuil2.zone = 2 Then
Sheets("Feuil2").Cells(i, "AI") = "H1b"
ElseIf Feuil2.zone = 3 Then
Sheets("Feuil2").Cells(i, "AI") = "H1c"
ElseIf Feuil2.zone = 4 Then
Sheets("Feuil2").Cells(i, "AI") = "H2a"
ElseIf Feuil2.zone = 5 Then
Sheets("Feuil2").Cells(i, "AI") = "H2b"
ElseIf Feuil2.zone = 6 Then
Sheets("Feuil2").Cells(i, "AI") = "H2c"
ElseIf Feuil2.zone = 7 Then
Sheets("Feuil2").Cells(i, "AI") = "H2d"
ElseIf Feuil2.zone = 8 Then
Sheets("Feuil2").Cells(i, "AI") = "H3"
Else: MsgBox ("Le calcul ne peut s'effectuer sans la localisation des travaux")
End If

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 211 internautes nous ont dit merci ce mois-ci

Commenter la réponse de restecool80
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
214
3
Merci
Relis mon message plus haut.
Et comment as-tu déclaré Dep ?
Une autre fois : le seul code montré ne saurait, seul, aboutir à ce résultat ("") si :

- Dep est de type string
- tu es sur la feuille active
- la cellule concernée contient des caractères

Allez ===>> montre tout le code concerné (pas seulement ce que tu nous a montré) !

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 211 internautes nous ont dit merci ce mois-ci

Commenter la réponse de ucfoutu
Messages postés
7
Date d'inscription
vendredi 4 novembre 2011
Statut
Membre
Dernière intervention
4 novembre 2011
3
Merci
Dep est de type String, je suis sur la feuille active et la cellule est un code postal donc 5 chiffres consécutifs ... Le programme sur lequel je travail ne m'appartient pas, donc je ne peux pas vous le faire parvenir

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 211 internautes nous ont dit merci ce mois-ci

Commenter la réponse de restecool80
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
214
3
Merci
Attends un peu, là ...
Qu'affiche, par exemple (espaces compris) :
Msgbox "-" & Left(Range("AI" & i).Text, 2) & "-"

car si jamais ta cellule est formatée avec des espaces devant, il va de soit que les deux premiers caractères seront des espaces et que dep sera = " "
Quel est le format que tu as donné aux cellules de cette colonne ?

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 211 internautes nous ont dit merci ce mois-ci

Commenter la réponse de ucfoutu
Messages postés
7
Date d'inscription
vendredi 4 novembre 2011
Statut
Membre
Dernière intervention
4 novembre 2011
3
Merci
Je lui ai donné le format code postal (France)

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 211 internautes nous ont dit merci ce mois-ci

Commenter la réponse de restecool80
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
214
0
Merci
Le programme sur lequel je travail ne m'appartient pas, donc je ne peux pas vous le faire parvenir

et nous ne pouvons t'aider à trouver la bévue sans le voir, ce programme (la seule partie concernée, donc toute la boucle sur i)
Nous ne sommes pasq devins !
Bonne chance dans tes demandes d'aide qui seraient sollicitées sans vouloir exposer tous les "tenants" ...
Compte tenu de ta réaction : j'insiste donc sur ce que je t'ai déjà dit. Pas d'erreur dans ce (et uniquement cela) que tu nous a montré


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Commenter la réponse de ucfoutu
Messages postés
7
Date d'inscription
vendredi 4 novembre 2011
Statut
Membre
Dernière intervention
4 novembre 2011
0
Merci
Je peux vraiment vous filer le code complet :s
Mais merci quand même ^^
Commenter la réponse de restecool80
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
214
0
Merci
Pas de quoi, mais (une &autre fois) : nous ne pouvons ici faire des multitudes de suppositions sur ce qui, dans ton code et ailleurs que ce que tu nous a montré), serait responsable !
Une chose demeure claire, ce code ne peut que retourner dans Dep les deux premiers caractères de la cellule concernée, si toutes les conditions rappelées dans les messages précédents prévalent bien.
Bonne chance.


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Commenter la réponse de ucfoutu
Messages postés
1241
Date d'inscription
mardi 10 octobre 2006
Statut
Membre
Dernière intervention
27 août 2013
3
0
Merci
Ce qui est bizarre c'est ce que tu as dit là :

Dep ="" quoi que je fasse ... Alors que (Range("AI" & i).Text, 2) affiche bien la valeur rentrée dans la cellule


Bref sans tout le code effectivement difficile de t'aider, vu que c'est une cellule au format spécifique, peut-être la propriété text n'est pas adapté et qu'il faudrait utiliser .value ou bien convertir en fonction de la déclaration de Dep..

PS : ne mets pas réponse accepté tant que ton problème n'est pas résolu, on sait jamais si des membres passent ici et auraient d'autres hypothèses..

L'expérience, c'est une connerie par jour, mais jamais la même..
Commenter la réponse de lolokun
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
214
0
Merci
Bonjour, lolokun
Non ===>> la propriété Text est, elle, bien adéquate (fais le test, comme je l'ai fait).


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Commenter la réponse de ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
214
0
Merci
Ce que je soupçonne, en fit (et dont on ne nous dit pas un mot ), c'est que ces codes postaux ont été "importés" et qu'ils contiennent un caractère non imprimable devant.
Mais tout semble ici être "secret" ... alors ... ===>> que le secret et la pagaille demeurent donc



____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Commenter la réponse de ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
214
0
Merci
Et on attend encore une réponse à ce que j'ai demandé plus haut :
Attends un peu, là ...
Qu'affiche, par exemple (espaces compris) :

    Msgbox "-" & Left(Range("AI" & i).Text, 2) & "-"

(réponse qui aurait sacrément permis d'y voir plus clair et nous aurait probablement mis sur la voie de ce que j'expose dans mon message juste au-dessus à propos de données importées)
Mais c'est probablement également "secret" !



____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Commenter la réponse de ucfoutu
Messages postés
1241
Date d'inscription
mardi 10 octobre 2006
Statut
Membre
Dernière intervention
27 août 2013
3
0
Merci
Oui j'y avais également pensé aux caractères spéciaux avant le code postal..Mais bon ça nous ne pouvons pas le deviner sans plus de code et d'infos


L'expérience, c'est une connerie par jour, mais jamais la même..
Commenter la réponse de lolokun
Messages postés
7
Date d'inscription
vendredi 4 novembre 2011
Statut
Membre
Dernière intervention
4 novembre 2011
0
Merci
Nan rien est importé tout est tappé à la main et c'est bien ça le problème
Commenter la réponse de restecool80
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
214
0
Merci
Alors le problème est quelque part dans le reste du code (que nous ne connaissons pas).
Tu es donc seul à pouvoir y rechercher la mauvaise manip.


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Commenter la réponse de ucfoutu