Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#1 Tue 01 October 2013 17:32

Rouyer Cyril
Participant occasionnel
Date d'inscription: 27 Sep 2012
Messages: 24

Arcgis 10 : Calcul conditionnel sur des dates

Bonjour à tous.

Je travaille sur une table attributaire contenant plusieurs champs, seul deux m’intéresse un [Controler] contenant la date du contrôle et un [Resultat] contenant les valeurs au format texte, Conforme ou Non-Conforme.

Je souhaiterai calculer un 3eme champs de manière conditionnel. C'est à dire si le résultat est conforme, prochain contrôle dans 10 ans, si le résultat est non conforme, prochain contrôle dans un an.

J'ai essayé ce script VB dans le calculateur de champs :

Code:

If [Resultat] = "Conforme" then [Prochain_C] = [Controle] + 3650
EsleIf [Resultat] = "Non-Conforme" then [Prochain_C] = [Controle] + 365
End if

Mais sans succès.

Merci de votre aide

Cyril

Hors ligne

 

#2 Tue 01 October 2013 17:35

Spacejo
Membre
Lieu: Nancy
Date d'inscription: 17 Aug 2008
Messages: 2511

Re: Arcgis 10 : Calcul conditionnel sur des dates

Salut,

Un message d'erreur?
Le script doit être rédigé comme ceci:

Code:

If [Resultat] = "Conforme" then
 [Prochain_C] = [Controle] + 3650
EsleIf [Resultat] = "Non-Conforme" then
 [Prochain_C] = [Controle] + 365
End if

Quelle est la nature du champ --> Controle
A+
Joël

Dernière modification par Spacejo (Tue 01 October 2013 17:38)

Hors ligne

 

#3 Tue 01 October 2013 17:42

Rouyer Cyril
Participant occasionnel
Date d'inscription: 27 Sep 2012
Messages: 24

Re: Arcgis 10 : Calcul conditionnel sur des dates

Merci Spacejo

J'ai testé ton script et toujours pas de succès.
Les messages d'erreur sont :
- ERROR 999999: Erreur lors de l'exécution de la fonction.
- Echec de l'exécution de (CalculateField).

Cyril

Hors ligne

 

#4 Tue 01 October 2013 17:45

Spacejo
Membre
Lieu: Nancy
Date d'inscription: 17 Aug 2008
Messages: 2511

Re: Arcgis 10 : Calcul conditionnel sur des dates

Et comme ceci:

Code:

I=[Resultat]
ACalculer=[Prochain_C]
Test=[Controle]

If I="Conforme" then
ACalculer=Test + 3650
ElseIf I="Non-Conforme" then
ACalculer=Test + 365
End If

Mettre "ACalculer" dans le champ en dessous du code

Dernière modification par Spacejo (Tue 01 October 2013 17:51)

Hors ligne

 

#5 Tue 01 October 2013 17:53

Rouyer Cyril
Participant occasionnel
Date d'inscription: 27 Sep 2012
Messages: 24

Re: Arcgis 10 : Calcul conditionnel sur des dates

J'ai bien compris le script mais je ne comprends pas ta dernière remarque.
Mettre "ACalculer" dans le champ en dessous du code

Hors ligne

 

#6 Tue 01 October 2013 17:55

Spacejo
Membre
Lieu: Nancy
Date d'inscription: 17 Aug 2008
Messages: 2511

Re: Arcgis 10 : Calcul conditionnel sur des dates

En dessous de la fenêtre oû tu places le code il doit y avoir un champ appeler "Prochain_C="
C'est dans ce champ qu'il te faut placer la variable "ACalculer"
Une question peut être bête wink (désolé) ---> tu as coché le mode "Avancé" ?

Dernière modification par Spacejo (Tue 01 October 2013 17:57)

Hors ligne

 

#7 Tue 01 October 2013 18:01

Rouyer Cyril
Participant occasionnel
Date d'inscription: 27 Sep 2012
Messages: 24

Re: Arcgis 10 : Calcul conditionnel sur des dates

Question pas bête du tout, où se trouve l'option avancé?

Je suis dans la calculatrice de valeur de champs. Peut être n'est ce pas par là?

Hors ligne

 

#8 Tue 01 October 2013 18:03

Spacejo
Membre
Lieu: Nancy
Date d'inscription: 17 Aug 2008
Messages: 2511

Re: Arcgis 10 : Calcul conditionnel sur des dates

Comme tu as une version 10: Coche "VBscript" et "ShowCodeBlock"
Voir ---> Utilisation de blocs de code
Dans --- > http://help.arcgis.com/fr/arcgisdesktop … 002m000000

Dernière modification par Spacejo (Tue 01 October 2013 18:26)

Hors ligne

 

#9 Tue 01 October 2013 18:13

Spacejo
Membre
Lieu: Nancy
Date d'inscription: 17 Aug 2008
Messages: 2511

Re: Arcgis 10 : Calcul conditionnel sur des dates

Une autre solution si tu n'arrives avec un code VBscript comme celui que je t'ai suggéré.
Faire une sélection SQL avec comme critère "Conforme" puis calcule ton champ avec [Controle] + 3650
en précisant sur la "sélection" et non sur la "table entière"
Puis tu fais une autre sélection avec "Non-Conforme" même manip qu'au dessus avec  [Controle] + 365
Tout ça avec la fenêtre Calculer Champ en Non Avancé ce coup ci wink

Dernière modification par Spacejo (Wed 02 October 2013 00:57)

Hors ligne

 

#10 Wed 02 October 2013 09:04

Rouyer Cyril
Participant occasionnel
Date d'inscription: 27 Sep 2012
Messages: 24

Re: Arcgis 10 : Calcul conditionnel sur des dates

Merci pour les infos. La solution alternative que tu me proposes est ce que j'avais réalisé avant de faire ce post. Mais je voulais comprendre comment faire les conditionnelles pour la prochaine fois.
Je vais tester dans la journée les réglages et je te tiens au courant. Entre nancéen...

Hors ligne

 

#11 Wed 02 October 2013 10:21

Rouyer Cyril
Participant occasionnel
Date d'inscription: 27 Sep 2012
Messages: 24

Re: Arcgis 10 : Calcul conditionnel sur des dates

Bonjour Spacejo,

J'ai bien pris note des endroits où noté les code ainsi que la page vers laquelle tu m'a renvoyé mais cela ne fonctionne toujours pas. J'ai alors tenté avec un code encore plus simple :

Dim ACalculer

If [FID] < 100 Then
ACalculer = [Controler] + 365

ElseIf [FID] > 101 Then
ACalculer = [Controler] + 3650

End If

et en mettant ACalculer dans le champ en dessous du code.

Toujours pas de succès. Toujours les même messages d'erreur.

Hors ligne

 

#12 Wed 02 October 2013 10:57

Spacejo
Membre
Lieu: Nancy
Date d'inscription: 17 Aug 2008
Messages: 2511

Re: Arcgis 10 : Calcul conditionnel sur des dates

Salut,

Depuis la version 10 la déclaration de variable standard n'est plus obligatoire et pose des problèmes (j'ai lus plusieurs posts là dessus wink )
Donc plus de --> Dim ACalculer
Une question de quelle nature est ta colonne ACalculer?

Hors ligne

 

#13 Wed 02 October 2013 11:05

Rouyer Cyril
Participant occasionnel
Date d'inscription: 27 Sep 2012
Messages: 24

Re: Arcgis 10 : Calcul conditionnel sur des dates

La variable ACalculer correspond au champ [prochain_C] c'est donc au format Date.
Si on ne met plus "Dim" comment présente t'on la variable?

Hors ligne

 

#14 Wed 02 October 2013 11:13

Spacejo
Membre
Lieu: Nancy
Date d'inscription: 17 Aug 2008
Messages: 2511

Re: Arcgis 10 : Calcul conditionnel sur des dates

Déclaration de variable --> Voir post#3 --> http://www.forumsig.org/showthread.php/ … -ArcGis-10
Je suppose que la nature de "Acontroler" est aussi au format date.
Je pense que ce qui pose problème c'est le calcul des dates
Une possibilité pour voir si c'est ça qui pose problème.
Fais une copie de ta table (prudence wink )
Ajoute une colonne dans ta table "New" au format string
Puis

Code:

I=[Resultat]
ACalculer=[New]


If I="Conforme" then
ACalculer="oui"
ElseIf I="Non-Conforme" then
ACalculer="Non"
End If

Dernière modification par Spacejo (Wed 02 October 2013 11:28)

Hors ligne

 

#15 Wed 02 October 2013 11:23

Rouyer Cyril
Participant occasionnel
Date d'inscription: 27 Sep 2012
Messages: 24

Re: Arcgis 10 : Calcul conditionnel sur des dates

Pourtant lorsque je le fait sans condition, cela fonctionne parfaitement. C'est à dire une selection préalable et mettre à jour sur la sélection.

Hors ligne

 

#16 Wed 02 October 2013 11:32

Rouyer Cyril
Participant occasionnel
Date d'inscription: 27 Sep 2012
Messages: 24

Re: Arcgis 10 : Calcul conditionnel sur des dates

Je viens de réaliser la manip et cela fonctionne parfaitement.

Hors ligne

 

#17 Wed 02 October 2013 11:34

Spacejo
Membre
Lieu: Nancy
Date d'inscription: 17 Aug 2008
Messages: 2511

Re: Arcgis 10 : Calcul conditionnel sur des dates

Une question bête encore une fois wink
Tu travailles sur un .shp ou sur une géodatabase?

Hors ligne

 

#18 Wed 02 October 2013 11:37

Forestis
Participant assidu
Lieu: Aniane (Hérault)
Date d'inscription: 5 Sep 2005
Messages: 168
Site web

Re: Arcgis 10 : Calcul conditionnel sur des dates

Bonjour,
La question indispensable pour laquelle je n'ai pas vu de réponse c'est : Quel est la nature de ton champ [Controler] .
en fait il y a deux solutions
la première : tu utilise la fonction vbscrite dateAdd:

Code:

Dim MonCalcul

Select case [TonChampConformite] 
  case "Conforme"
    MonCalcul =DateAdd ("yyyy",10, [Controler] )
  case "Non Conforme"
    MonCalcul =DateAdd ("yyyy",1, [Controler] )
end select

la deuxième : tu converti en nombre ta date pour lui ajouter un nombre de jour (tu ne peux pas ajouter simplement des jours a une date puisqu'une date est multivariée en année mois jours heure seconde)

Code:

Dim MonCalcul

Select case [TonChampConformite] 
  case "Conforme"
  MonCalcul =Int ([Controler] )+3650
  case "Non Conforme"
  MonCalcul =Int ([Controler] )+365
end select

évidemment tout ça fonctionne uniquement si [Controler] est en type "date"

Dernière modification par Forestis (Wed 02 October 2013 11:41)


[Matthieu Pette - Ad Terram] (@Ad_Terram sur le PiouPiou bleu)

~Géomaticien Indépendant~

Hors ligne

 

#19 Wed 02 October 2013 11:40

Spacejo
Membre
Lieu: Nancy
Date d'inscription: 17 Aug 2008
Messages: 2511

Re: Arcgis 10 : Calcul conditionnel sur des dates

Merci à toi Forestis wink
A+
Joël

Hors ligne

 

#20 Wed 02 October 2013 11:45

Forestis
Participant assidu
Lieu: Aniane (Hérault)
Date d'inscription: 5 Sep 2005
Messages: 168
Site web

Re: Arcgis 10 : Calcul conditionnel sur des dates

Pour préciser quand tu converti une date en nombre cela affiche le nombre de jour depuis le 01/01/1900 (ou le 31/12/1899) je sais plus)
et c'est donc avec ce chiffre que tu peux rajouter des jours.
ex : aujourd'hui nous sommes 02/10/2013 soit 41549 jours après cette date de début du calendrier.

Pour DateAdd un lien vers les fonctions vbscript de date : http://www.w3schools.com/vbscript/vbscr … ctions.asp

EDIT en fait c'est le 30/12/1899 la date de reference

Dernière modification par Forestis (Wed 02 October 2013 11:57)


[Matthieu Pette - Ad Terram] (@Ad_Terram sur le PiouPiou bleu)

~Géomaticien Indépendant~

Hors ligne

 

#21 Wed 02 October 2013 11:48

Rouyer Cyril
Participant occasionnel
Date d'inscription: 27 Sep 2012
Messages: 24

Re: Arcgis 10 : Calcul conditionnel sur des dates

Merci Forestis, ta solution n°1 fonctionne parfaitement.
Merci Joël, pour le temps passer, j'ai appris pas mal de truc. Pour répondre à ta dernière question je bosse mes essai sur un .shp.

Merci à vous 2.

Cyril

Hors ligne

 

Pied de page des forums

Powered by FluxBB