viarn
Messages postés33Date d'inscriptiondimanche 28 septembre 2003StatutMembreDernière intervention21 février 2006
-
2 mai 2005 à 02:21
dede59620
Messages postés23Date d'inscriptionvendredi 15 octobre 2004StatutMembreDernière intervention31 juillet 2017
-
20 juin 2010 à 13:29
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
dede59620
Messages postés23Date d'inscriptionvendredi 15 octobre 2004StatutMembreDernière intervention31 juillet 2017 20 juin 2010 à 13:29
C'est bon et ça m'est utile alors je mets un 9/10 pour faire monter la moyenne.
Il est évident qu'on peut toujours améliorer un code, surtout quand on ne l'a pas fait soi-même, alors j'en profite pour le rendre compatible avec une position quelconque du graphe sur la feuille.
Et pour supprimer deux contrôles numériques.
Bon courage.
Private Sub Command1_Click() 'Permet de placer sur la carte la position choisie.
If Not IsNumeric(Text1.Text) Then 'Si Text1.text n'est pas un chiffre alors
MsgBox "Entrez un chiffre." 'On affiche un message à l'utilisateur
Exit Sub 'Et on quitte la procédure
End If
If Not IsNumeric(Text2.Text) Then 'Si Text2.text n'est pas un chiffre alors
MsgBox "Entrez un chiffre." 'On affiche un message à l'utilisateur
Exit Sub 'Et on quitte la procédure
End If
Line7.Visible = True 'Rend visible la croix qui indiquera la position
Line8.Visible = True 'Rend visible la croix qui indiquera la position
Shape1.Visible = True 'Rend visible la croix qui indiquera la position
Longitude = Text1.Text 'On affecte la valeur de Text1.text à Longitude
Latitude = Text2.Text 'On affecte la valeur de Text2.text à Latitude
N_S = Combo1.List(Combo1.ListIndex) 'On affecte à N_S la valeur séléctionnée par l'utilisateur pour la position Nord/Sud
E_O = Combo2.List(Combo2.ListIndex) 'On affecte à E_O la valeur séléctionnée par l'utilisateur pour la position Est/Ouest
If N_S = "Nord" And Longitude > 90 Then 'Si Nord est séléctionné et que Longitude est supérieure à 90°
Combo1.Text = Combo1.List(1) 'Alors on affiche dans la combo la position Sud Longitude 180 - Longitude 'Et on indique que Longitude 180 - Longitude
End If
If N_S = "Sud" And Longitude > 90 Then 'Si Sud est séléctionné et que Longitude est supérieure à 90°
Combo1.Text = Combo1.List(0) 'Alors on affiche dans la combo la position Nord Longitude 180 - Longitude 'Et on indique que Longitude 180 - Longitude
End If
If E_O = "Est" And Latitude > 180 Then 'Si Est est séléctionné et que Latitude est supérieure à 180°
Combo2.Text = Combo2.List(1) 'Alors on affiche dans la combo la position Ouest Latitude 360 - Latitude 'Et on indique que Latitude 360 - Latitude
End If
If E_O = "Ouest" And Latitude > 180 Then 'Si Ouest est séléctionné et que Latitude est supérieure à 180°
Combo2.Text = Combo2.List(0) 'Alors on affiche dans la combo la position Est Latitude 360 - Latitude 'Et on indique que Latitude 360 - Latitude
End If
N_S = Combo1.Text 'On met Combo1.text dans N_S car celui ci à peut etre été modifié cf au dessus
E_O = Combo2.Text 'On met Combo2.text dans E_O car celui ci à peut etre été modifié cf au dessus
Text1.Text = Longitude 'On met Longitude dans Text1.text car celui ci à peut etre été modifié cf au dessus
Text2.Text = Latitude 'On met Latitude dans Text2.text car celui ci à peut etre été modifié cf au dessus
If N_S = "Nord" Then 'Si N_S est égal à Nord on place la ligne horizontale sur le point
Line8.Y1 = Image1.Top + Image1.Height / 2 - (Image1.Width * Longitude / 360)
Line8.Y2 = Image1.Top + Image1.Height / 2 - (Image1.Width * Longitude / 360)
Line8.X1 = Image1.Left + Image1.Width / 2 - Image1.Width / 2
Line8.X2 = Image1.Left + Image1.Width / 2 + Image1.Width / 2
Else 'Si N_S n'est pas égal à Nord, donc c'est Sud
Line8.Y1 = Image1.Top + Image1.Height / 2 + (Image1.Width * Longitude / 360)
Line8.Y2 = Image1.Top + Image1.Height / 2 + (Image1.Width * Longitude / 360)
Line8.X1 = Image1.Left + Image1.Width / 2 - Image1.Width / 2
Line8.X2 = Image1.Left + Image1.Width / 2 + Image1.Width / 2
End If
If E_O = "Est" Then 'Si E_O est égal à Est on place la ligne verticale sur le point
Line7.Y1 = Image1.Top + Image1.Height / 2 - Image1.Height / 2
Line7.Y2 = Image1.Top + Image1.Height / 2 + Image1.Height / 2
Line7.X1 = Image1.Left + Image1.Width / 2 + (Image1.Width * Latitude / 360)
Line7.X2 = Image1.Left + Image1.Width / 2 + (Image1.Width * Latitude / 360)
Else 'Si E_O n'est pas égal à Est, donc c'est Ouest
Line7.Y1 = Image1.Top + Image1.Height / 2 - Image1.Height / 2
Line7.Y2 = Image1.Top + Image1.Height / 2 + Image1.Height / 2
Line7.X1 = Image1.Left + Image1.Width / 2 - (Image1.Width * Latitude / 360)
Line7.X2 = Image1.Left + Image1.Width / 2 - (Image1.Width * Latitude / 360)
End If
'Notre point est trouvé, c'est le croisement de Line7 et Line8
'Ici on centre le carré sur le centre des 2 lignes
Shape1.Left = Line7.X1 - Shape1.Width / 2
Shape1.Top = Line8.Y1 - Shape1.Height / 2
End Sub
Private Sub Command2_Click() 'Permet d'afficher l'équateur et 4 autres lignes.
'Permet de rendre visible les différentes lignes et label que nous utiliserons
Line1.Visible = True
Line2.Visible = True
Line3.Visible = True
Line4.Visible = True
Line5.Visible = True
Line6.Visible = True
Label1.Visible = True
Label2.Visible = True
Label3.Visible = True
Label4.Visible = True
Label5.Visible = True
Label6.Visible = True
Private Sub Form_Load() 'S'execute dès le lancement de la feuille
'Permet de charger l'image
Image1.Picture = LoadPicture(App.Path & "\map.jpg")
'Centre l'image au milieu de l'écran
'image1.Left = 4000 'Screen.Width / 2 - image1.Width / 2
'image1.Top = 300 ' Screen.Height / 2 - image1.Height / 2
'Centre la frame par rapport à la hauteur de l'écran
'Frame1.Top = Screen.Height / 2 - Frame1.Height / 2
'Ajoute les 4 directions aux 2 Combos
Combo1.AddItem "Nord"
Combo1.AddItem "Sud"
Combo2.AddItem "Est"
Combo2.AddItem "Ouest"
'Affiche le premier élément de la combo
Combo1.Text = Combo1.List(0)
Combo2.Text = Combo2.List(0)
Image1.MouseIcon = LoadPicture(App.Path & "\6.ico")
Image1.MousePointer = 99
End Sub
Private Sub image1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Y > (Image1.Height / 2) Then
Y1 = (Y - (Image1.Height) / 2) * 180 / Image1.Height
Combo1.Text = Combo1.List(1)
Text1.Text = Y1 'Si Y est plus grand que la moitie de la hauteur de l'image alors on est au Sud de l'Equateur
Else
Y1 = ((Image1.Height / 2) - Y) * 180 / Image1.Height
Combo1.Text = Combo1.List(0)
Text1.Text = Y1 'Si Y est plus petit que la moitie de le hauteur de l'image alors on est au Nord de l'Equateur
End If
If X > (Image1.Width / 2) Then
X1 = (X - (Image1.Width / 2)) * 180 / Image1.Height
Combo2.Text = Combo2.List(0)
Text2.Text = X1 'Si X est plus grand que la moitie de la largeur de l'image alors on est à l'Est du 0°
Else
X1 = ((Image1.Width / 2) - X) * 180 / Image1.Height
Combo2.Text = Combo2.List(1)
Text2.Text = X1 'Si X est plus petit que la moitie de la largeur de l'image alors on est à l'Ouest du 0°
End If
End Sub
Private Sub Text1_Change()
If Text1.Text > 90 Then Text1.Text = 90
End Sub
Private Sub Text2_Change()
If Text2.Text > 180 Then Text2.Text = 180
End Sub
JULIEN0
Messages postés37Date d'inscriptionjeudi 24 avril 2003StatutMembreDernière intervention16 mai 20141 10 juin 2009 à 14:36
Tout d'abord merci pour cette source très simple à comprendre,
Super source, mais je ne comprend pas pourquoi tu uilise la valeure 0,0375, valeure que tu as deja calculé par rapport a la taille verticale de l'image actuelle (4800 points) :
"Y1 = (Y - (Image1.Height) / 2) * 0,0375"
alors que si tu marque :
Y1 = (Y - (Image1.Height) / 2) * 180 / Image1.Height
tu n'avais pas expliqué comment tu arrive a 0,0375....
la tu as bien une valeure qui dépend de la taille de ton image, tu peux alors agrandir l'image ou mettre une autre image ca marche toujours. ou mettre en place un systeme de zoom.... etc...
Sniper_Vgaerr
Messages postés113Date d'inscriptionjeudi 2 décembre 2004StatutMembreDernière intervention14 août 2006 3 juil. 2005 à 22:23
Merci, mais désolé pour toi je ne connais pas le Java, mais content que ce programme te plaise. Merci
misteraoul
Messages postés23Date d'inscriptionmardi 16 novembre 2004StatutMembreDernière intervention25 novembre 2009 2 juil. 2005 à 22:19
C'est une super source, mon portable me donne la position du soleil et de la lune par rapport au nord geographique, seulement il faut entrer les coordonnées du lieu, se programme est donc parfait pour moi. P.S: si tu pouvai coder la meme chose en java pour le mettre sur mon portable aussi sa serai bien :D . Bravo Sniper_Vgaerr
viarn
Messages postés33Date d'inscriptiondimanche 28 septembre 2003StatutMembreDernière intervention21 février 2006 3 mai 2005 à 18:32
bravo. 8/10 pour les efforts.
A bientôt.
Sniper_Vgaerr
Messages postés113Date d'inscriptionjeudi 2 décembre 2004StatutMembreDernière intervention14 août 2006 2 mai 2005 à 23:58
Ca y est c'est fait j'ai mis a jour ma source comme ca on peut pointer la carte et avoir les coordonnées.
Merci viarn
viarn
Messages postés33Date d'inscriptiondimanche 28 septembre 2003StatutMembreDernière intervention21 février 2006 2 mai 2005 à 02:21
Source interessante. Cependant, il faut que tu penses à indenter ton code pour la lisbilité, ainsi qu'au nommage des controles.
La source est correctement commentée.
Maitenant, prochaine étape, si tu es daccord, ca serait que l'on puisse déplacer le "petit viseur" avec la souris et que cela marque, ds tes textBox(s), les coordonnées automatiquement.
Pour les coordonnées LAMBERT II + on verra + tard.
20 juin 2010 à 13:29
Il est évident qu'on peut toujours améliorer un code, surtout quand on ne l'a pas fait soi-même, alors j'en profite pour le rendre compatible avec une position quelconque du graphe sur la feuille.
Et pour supprimer deux contrôles numériques.
Bon courage.
Private Sub Command1_Click() 'Permet de placer sur la carte la position choisie.
If Not IsNumeric(Text1.Text) Then 'Si Text1.text n'est pas un chiffre alors
MsgBox "Entrez un chiffre." 'On affiche un message à l'utilisateur
Exit Sub 'Et on quitte la procédure
End If
If Not IsNumeric(Text2.Text) Then 'Si Text2.text n'est pas un chiffre alors
MsgBox "Entrez un chiffre." 'On affiche un message à l'utilisateur
Exit Sub 'Et on quitte la procédure
End If
Line7.Visible = True 'Rend visible la croix qui indiquera la position
Line8.Visible = True 'Rend visible la croix qui indiquera la position
Shape1.Visible = True 'Rend visible la croix qui indiquera la position
Longitude = Text1.Text 'On affecte la valeur de Text1.text à Longitude
Latitude = Text2.Text 'On affecte la valeur de Text2.text à Latitude
N_S = Combo1.List(Combo1.ListIndex) 'On affecte à N_S la valeur séléctionnée par l'utilisateur pour la position Nord/Sud
E_O = Combo2.List(Combo2.ListIndex) 'On affecte à E_O la valeur séléctionnée par l'utilisateur pour la position Est/Ouest
If N_S = "Nord" And Longitude > 90 Then 'Si Nord est séléctionné et que Longitude est supérieure à 90°
Combo1.Text = Combo1.List(1) 'Alors on affiche dans la combo la position Sud Longitude 180 - Longitude 'Et on indique que Longitude 180 - Longitude
End If
If N_S = "Sud" And Longitude > 90 Then 'Si Sud est séléctionné et que Longitude est supérieure à 90°
Combo1.Text = Combo1.List(0) 'Alors on affiche dans la combo la position Nord Longitude 180 - Longitude 'Et on indique que Longitude 180 - Longitude
End If
If E_O = "Est" And Latitude > 180 Then 'Si Est est séléctionné et que Latitude est supérieure à 180°
Combo2.Text = Combo2.List(1) 'Alors on affiche dans la combo la position Ouest Latitude 360 - Latitude 'Et on indique que Latitude 360 - Latitude
End If
If E_O = "Ouest" And Latitude > 180 Then 'Si Ouest est séléctionné et que Latitude est supérieure à 180°
Combo2.Text = Combo2.List(0) 'Alors on affiche dans la combo la position Est Latitude 360 - Latitude 'Et on indique que Latitude 360 - Latitude
End If
N_S = Combo1.Text 'On met Combo1.text dans N_S car celui ci à peut etre été modifié cf au dessus
E_O = Combo2.Text 'On met Combo2.text dans E_O car celui ci à peut etre été modifié cf au dessus
Text1.Text = Longitude 'On met Longitude dans Text1.text car celui ci à peut etre été modifié cf au dessus
Text2.Text = Latitude 'On met Latitude dans Text2.text car celui ci à peut etre été modifié cf au dessus
If N_S = "Nord" Then 'Si N_S est égal à Nord on place la ligne horizontale sur le point
Line8.Y1 = Image1.Top + Image1.Height / 2 - (Image1.Width * Longitude / 360)
Line8.Y2 = Image1.Top + Image1.Height / 2 - (Image1.Width * Longitude / 360)
Line8.X1 = Image1.Left + Image1.Width / 2 - Image1.Width / 2
Line8.X2 = Image1.Left + Image1.Width / 2 + Image1.Width / 2
Else 'Si N_S n'est pas égal à Nord, donc c'est Sud
Line8.Y1 = Image1.Top + Image1.Height / 2 + (Image1.Width * Longitude / 360)
Line8.Y2 = Image1.Top + Image1.Height / 2 + (Image1.Width * Longitude / 360)
Line8.X1 = Image1.Left + Image1.Width / 2 - Image1.Width / 2
Line8.X2 = Image1.Left + Image1.Width / 2 + Image1.Width / 2
End If
If E_O = "Est" Then 'Si E_O est égal à Est on place la ligne verticale sur le point
Line7.Y1 = Image1.Top + Image1.Height / 2 - Image1.Height / 2
Line7.Y2 = Image1.Top + Image1.Height / 2 + Image1.Height / 2
Line7.X1 = Image1.Left + Image1.Width / 2 + (Image1.Width * Latitude / 360)
Line7.X2 = Image1.Left + Image1.Width / 2 + (Image1.Width * Latitude / 360)
Else 'Si E_O n'est pas égal à Est, donc c'est Ouest
Line7.Y1 = Image1.Top + Image1.Height / 2 - Image1.Height / 2
Line7.Y2 = Image1.Top + Image1.Height / 2 + Image1.Height / 2
Line7.X1 = Image1.Left + Image1.Width / 2 - (Image1.Width * Latitude / 360)
Line7.X2 = Image1.Left + Image1.Width / 2 - (Image1.Width * Latitude / 360)
End If
'Notre point est trouvé, c'est le croisement de Line7 et Line8
'Ici on centre le carré sur le centre des 2 lignes
Shape1.Left = Line7.X1 - Shape1.Width / 2
Shape1.Top = Line8.Y1 - Shape1.Height / 2
End Sub
Private Sub Command2_Click() 'Permet d'afficher l'équateur et 4 autres lignes.
'Permet de rendre visible les différentes lignes et label que nous utiliserons
Line1.Visible = True
Line2.Visible = True
Line3.Visible = True
Line4.Visible = True
Line5.Visible = True
Line6.Visible = True
Label1.Visible = True
Label2.Visible = True
Label3.Visible = True
Label4.Visible = True
Label5.Visible = True
Label6.Visible = True
'Ligne de l'Equateur
Line1.Y1 = Image1.Top + Image1.Height / 2
Line1.Y2 = Image1.Top + Image1.Height / 2
Line1.X1 = Image1.Left + Image1.Width / 2 - Image1.Width / 2
Line1.X2 = Image1.Left + Image1.Width / 2 + Image1.Width / 2
'Ligne du 45° Nord
Line2.Y1 = Image1.Top + Image1.Height / 2 - Image1.Width / 8
Line2.Y2 = Image1.Top + Image1.Height / 2 - Image1.Width / 8
Line2.X1 = Image1.Left + Image1.Width / 2 - Image1.Width / 2
Line2.X2 = Image1.Left + Image1.Width / 2 + Image1.Width / 2
'Ligne du 45° Sud
Line3.Y1 = Image1.Top + Image1.Height / 2 + Image1.Width / 8
Line3.Y2 = Image1.Top + Image1.Height / 2 + Image1.Width / 8
Line3.X1 = Image1.Left + Image1.Width / 2 - Image1.Width / 2
Line3.X2 = Image1.Left + Image1.Width / 2 + Image1.Width / 2
'Ligne du 0°
Line4.Y1 = Image1.Top + Image1.Height / 2 - Image1.Height / 2
Line4.Y2 = Image1.Top + Image1.Height / 2 + Image1.Height / 2
Line4.X1 = Image1.Left + Image1.Width / 2
Line4.X2 = Image1.Left + Image1.Width / 2
'Ligne du 45° Est
Line5.Y1 = Image1.Top + Image1.Height / 2 - Image1.Height / 2
Line5.Y2 = Image1.Top + Image1.Height / 2 + Image1.Height / 2
Line5.X1 = Image1.Left + Image1.Width / 2 + Image1.Width / 8
Line5.X2 = Image1.Left + Image1.Width / 2 + Image1.Width / 8
'Ligne du 45° Ouest
Line6.Y1 = Image1.Top + Image1.Height / 2 - Image1.Height / 2
Line6.Y2 = Image1.Top + Image1.Height / 2 + Image1.Height / 2
Line6.X1 = Image1.Left + Image1.Width / 2 - Image1.Width / 8
Line6.X2 = Image1.Left + Image1.Width / 2 - Image1.Width / 8
'Permet d'afficher le label de la ligne en face ou au dessus de celle-ci
Label1.Top = Image1.Top + Image1.Height / 2 - Label1.Height / 2 'Equateur
Label2.Top = Image1.Top + Image1.Height / 2 - Label2.Height / 2 - Image1.Width / 8 'Nord
Label3.Top = Image1.Top + Image1.Height / 2 - Label3.Height / 2 + Image1.Width / 8 'Sud
Label4.Top = Image1.Top + Image1.Height / 2 - Label4.Height / 2 - Image1.Height / 2 - 500 'Est
Label4.Left = Image1.Left + Image1.Width / 2 + Image1.Width / 8
Label5.Top = Image1.Top + Image1.Height / 2 - Label5.Height / 2 - Image1.Height / 2 - 500 'Ouest
Label5.Left = Image1.Left + Image1.Width / 2 - Image1.Width / 8
Label6.Top = Image1.Top + Image1.Height / 2 - Label6.Height / 2 - Image1.Height / 2 - 500 '0
Label6.Left = Image1.Left + Image1.Width / 2
End Sub
Private Sub Form_Load() 'S'execute dès le lancement de la feuille
'Permet de charger l'image
Image1.Picture = LoadPicture(App.Path & "\map.jpg")
'Centre l'image au milieu de l'écran
'image1.Left = 4000 'Screen.Width / 2 - image1.Width / 2
'image1.Top = 300 ' Screen.Height / 2 - image1.Height / 2
'Centre la frame par rapport à la hauteur de l'écran
'Frame1.Top = Screen.Height / 2 - Frame1.Height / 2
'Ajoute les 4 directions aux 2 Combos
Combo1.AddItem "Nord"
Combo1.AddItem "Sud"
Combo2.AddItem "Est"
Combo2.AddItem "Ouest"
'Affiche le premier élément de la combo
Combo1.Text = Combo1.List(0)
Combo2.Text = Combo2.List(0)
Image1.MouseIcon = LoadPicture(App.Path & "\6.ico")
Image1.MousePointer = 99
End Sub
Private Sub image1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Y > (Image1.Height / 2) Then
Y1 = (Y - (Image1.Height) / 2) * 180 / Image1.Height
Combo1.Text = Combo1.List(1)
Text1.Text = Y1 'Si Y est plus grand que la moitie de la hauteur de l'image alors on est au Sud de l'Equateur
Else
Y1 = ((Image1.Height / 2) - Y) * 180 / Image1.Height
Combo1.Text = Combo1.List(0)
Text1.Text = Y1 'Si Y est plus petit que la moitie de le hauteur de l'image alors on est au Nord de l'Equateur
End If
If X > (Image1.Width / 2) Then
X1 = (X - (Image1.Width / 2)) * 180 / Image1.Height
Combo2.Text = Combo2.List(0)
Text2.Text = X1 'Si X est plus grand que la moitie de la largeur de l'image alors on est à l'Est du 0°
Else
X1 = ((Image1.Width / 2) - X) * 180 / Image1.Height
Combo2.Text = Combo2.List(1)
Text2.Text = X1 'Si X est plus petit que la moitie de la largeur de l'image alors on est à l'Ouest du 0°
End If
End Sub
Private Sub Text1_Change()
If Text1.Text > 90 Then Text1.Text = 90
End Sub
Private Sub Text2_Change()
If Text2.Text > 180 Then Text2.Text = 180
End Sub
10 juin 2009 à 14:36
Super source, mais je ne comprend pas pourquoi tu uilise la valeure 0,0375, valeure que tu as deja calculé par rapport a la taille verticale de l'image actuelle (4800 points) :
"Y1 = (Y - (Image1.Height) / 2) * 0,0375"
alors que si tu marque :
Y1 = (Y - (Image1.Height) / 2) * 180 / Image1.Height
tu n'avais pas expliqué comment tu arrive a 0,0375....
la tu as bien une valeure qui dépend de la taille de ton image, tu peux alors agrandir l'image ou mettre une autre image ca marche toujours. ou mettre en place un systeme de zoom.... etc...
3 juil. 2005 à 22:23
2 juil. 2005 à 22:19
3 mai 2005 à 18:32
A bientôt.
2 mai 2005 à 23:58
Merci viarn
2 mai 2005 à 02:21
La source est correctement commentée.
Maitenant, prochaine étape, si tu es daccord, ca serait que l'on puisse déplacer le "petit viseur" avec la souris et que cela marque, ds tes textBox(s), les coordonnées automatiquement.
Pour les coordonnées LAMBERT II + on verra + tard.
Bonne prog.