Affecter une valeur en fonction de la zone géographique

Résolu
restecool80 Messages postés 7 Date d'inscription vendredi 4 novembre 2011 Statut Membre Dernière intervention 4 novembre 2011 - 4 nov. 2011 à 11:45
ucfoutu Messages postés 18038 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 ?

18 réponses

lolokun Messages postés 1241 Date d'inscription mardi 10 octobre 2006 Statut Membre Dernière intervention 27 août 2013 7
4 nov. 2011 à 11:50
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..
3
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 219
4 nov. 2011 à 11:56
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
3
restecool80 Messages postés 7 Date d'inscription vendredi 4 novembre 2011 Statut Membre Dernière intervention 4 novembre 2011
4 nov. 2011 à 13:38
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
3
restecool80 Messages postés 7 Date d'inscription vendredi 4 novembre 2011 Statut Membre Dernière intervention 4 novembre 2011
4 nov. 2011 à 13:42
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
3

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 219
4 nov. 2011 à 13:47
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
3
restecool80 Messages postés 7 Date d'inscription vendredi 4 novembre 2011 Statut Membre Dernière intervention 4 novembre 2011
4 nov. 2011 à 13:57
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
3
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 219
4 nov. 2011 à 13:59
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
3
restecool80 Messages postés 7 Date d'inscription vendredi 4 novembre 2011 Statut Membre Dernière intervention 4 novembre 2011
4 nov. 2011 à 14:03
Je lui ai donné le format code postal (France)
3
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 219
4 nov. 2011 à 14:04
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
0
restecool80 Messages postés 7 Date d'inscription vendredi 4 novembre 2011 Statut Membre Dernière intervention 4 novembre 2011
4 nov. 2011 à 14:07
Je peux vraiment vous filer le code complet :s
Mais merci quand même ^^
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 219
4 nov. 2011 à 14:18
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
0
lolokun Messages postés 1241 Date d'inscription mardi 10 octobre 2006 Statut Membre Dernière intervention 27 août 2013 7
4 nov. 2011 à 14:24
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..
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 219
4 nov. 2011 à 14:27
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
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 219
4 nov. 2011 à 14:39
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
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 219
4 nov. 2011 à 14:46
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
0
lolokun Messages postés 1241 Date d'inscription mardi 10 octobre 2006 Statut Membre Dernière intervention 27 août 2013 7
4 nov. 2011 à 14:50
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..
0
restecool80 Messages postés 7 Date d'inscription vendredi 4 novembre 2011 Statut Membre Dernière intervention 4 novembre 2011
4 nov. 2011 à 16:34
Nan rien est importé tout est tappé à la main et c'est bien ça le problème
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 219
4 nov. 2011 à 17:22
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
0