IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

[VB6] Problème pour des divisions


Sujet :

VB 6 et antérieur

  1. #1
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    64
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 64
    Points : 33
    Points
    33
    Par défaut [VB6] Problème pour des divisions
    Bonjour,

    J'ai un algorithme que j'aimerais passer sous Visual Basic 6, mais j'ai quelques problèmes avec les div et mod...

    Voici l'algorithme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    Var
     
    	temps1, temps2, heure, minute, seconde, total : réel
     
    Début
     
    	Afficher (« Saisir un temps en secondes »
    	Saisir (temps1)
     
    	heure <- temps1 div 3600
    	temps2 <- temps1 mod 3600
    	minute <- temps2 div 60
    	seconde <- temps2 mod 60
     
    	Afficher (heure, « heure », minute, « minutes », seconde, « secondes »)	
     
    Fin
    Il permet à partir d'un nombre en seconde de l'avoir en heure, minutes et seconde.

    Mais je rencontre un problème sous VB6 car je ne sais pas comment "prendre" le reste de la division, pour continuer mes calculs... Auriez-vous une idée ?

    Merci d'avance pour votre aide.

  2. #2
    Expert éminent

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 813
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 813
    Points : 7 638
    Points
    7 638
    Par défaut
    Salut,

    Citation Envoyé par franck1001 Voir le message
    je ne sais pas comment "prendre" le reste de la division
    ça s'appelle un modulo ça... opérateur "mod"... (www.google.fr pour plus d'infos... mots-clefs "vb6 reste division")
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

  3. #3
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    64
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 64
    Points : 33
    Points
    33
    Par défaut
    Mais je dois aussi utiliser div et mod dans mon code VB ? Car quand je mets DIV ça me met mon expression en rouge, en gros que c'est une erreur quoi.

    Merci tout de même.

    EDIT :

    Voici ce que j'ai fais et qui ne fonctionne pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Public Sub main()
     
    Dim temps1, temps2, heure, minute, seconde As Integer
     
    temps1 = InputBox("Donnez un temps en secondes")
     
    heure = temps1 div 3600
    temps2 = temps1 Mod 3600
    minute = temps2 div 60
    seconde = temps2 Mod 60
     
    msgbox (heure "heures", minute "minutes", seconde "secondes")
     
    End Sub

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 123
    Points : 174
    Points
    174
    Par défaut
    Puisque tu déclares tes variables comme "integer", tu n'as pas besoin d'utiliser "div". D'ailleurs, le compilateur déclare une erreur car il faut utiliser "/" au lieu de "div". Et alors, ton code passe très bien. Comme tes variables sont entières, le résultat d'une division est forcément un nombre entier.
    D'autre part, il n'y a pas de problème pour "mod" qui est accepté.

  5. #5
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    64
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 64
    Points : 33
    Points
    33
    Par défaut
    Citation Envoyé par PANORAMIC Voir le message
    il faut utiliser "/" au lieu de "div".
    Bonjour,

    Merci pour cette réponse, mais j'ai trouvé un p'tit mémentos Algo > VB sur le net, et ils disent remplacer div par "\"

    Donc c'est se que j'ai fait, mais par contre j'ai a un nouveau un autre soucis pour l'affchage de la fin :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    msgbox (heure "heures", minute "minutes", seconde "secondes")
    Sa me le met en rouge, comment résoudre ce problème ?

    Merci d'avance pour l'aide

  6. #6
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 177
    Points
    17 177
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    msgbox (cstr(heure) &  " heures, " & cstr(minute) & " minutes, " & cstr(seconde) &  "secondes")
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  7. #7
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    64
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 64
    Points : 33
    Points
    33
    Par défaut
    Merci mais il n'y a pas une autre façon plus simple ? Car j'ai commencé le VB il y a a peine 1 mois et nous n'avons pas encore vu de "cstr" ?

    Mais merci déjà !

    EDIT : j'ai rien dit, même en enlevant les cstr ça fonctionne quand même ! Merciii


    Autre petite question : existe-t-il un signe pour ≠ sous VB6 ?

  8. #8
    Membre expert Avatar de OhMonBato
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    2 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 660
    Points : 3 685
    Points
    3 685
    Par défaut
    Citation Envoyé par franck1001 Voir le message
    Autre petite question : existe-t-il un signe pour ≠ sous VB6 ?

    <>
    Pour VB6 : N'oubliez pas d'aller voir la FAQ et les Tutoriels
    Vous trouvez une reponse particulierement utile ? Votez pour !

  9. #9
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Points : 2 416
    Points
    2 416
    Par défaut
    Bonjour,
    Beaucoup plus simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub SecHeure()
    Dim Seconde As Long
    Dim T As Date
        'Exemple
        Seconde = 6550
        T = TimeSerial(0, 0, Seconde)
        'T= 1:49:10
     
    End Sub
    Et si tu met Seconde +> tu auras mêmes les jours, les mois et les années.
    Pour autant que tu ne dépasse pas les capacités de VB bien sur
    EDIT2:
    Ca marche pas avec les jours pourtant je l'ai déjà fait, je recherche et revient.
    A+

  10. #10
    Membre expert Avatar de OhMonBato
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    2 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 660
    Points : 3 685
    Points
    3 685
    Par défaut
    ou encore :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Debug.Print Format( Seconde / 86400, "hh:mm:ss")
    Pour VB6 : N'oubliez pas d'aller voir la FAQ et les Tutoriels
    Vous trouvez une reponse particulierement utile ? Votez pour !

  11. #11
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Points : 2 416
    Points
    2 416
    Par défaut
    Bonjour,
    Un peu tard mais mon adsl à été HS hier.
    Après recherche, le passage en date ne se fait qu'avec les heures d'où...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    Private Sub Command1_Click()
    Dim a As Long
    Dim S As Integer, M As Integer, Hr As Integer
    Dim J As Integer, Mois As Integer, An As Integer, h
    Dim d As Date
        a = 12240072 'pour le test
        If a > 3600 Then '
            h = a \ 3600 ' Heures totales = 3884
            a = a - (h * 3600)
        End If
            M = a \ 60    'Minute =1
            S = a - (M * 60) 'Seconde = 12
    'Suite 1
            'Pour splité les heures en jour,mois,année
            Hr = Hour(TimeSerial(h, M, S)) 'heure = 16
            h = h - Hr
            If h \ 24 > 0 Then J = h \ 24
            'Jour = 21
            If J > 30 Then Mois = (J \ 30): J = J - (Mois * 30)
            'Résultats : Mois = 4 : Année = 0
            If Mois > 12 Then An = Mois \ 12: Mois = Mois - (An \ 12)
    'Solution 2
           'Cette façon série les mois en fonction du nombre
           'de jour dans les mois à partir du 1er Janvier
           ' J = Day(TimeSerial(h, M, S)) - 1
            'Mois = Month(TimeSerial(h, M, S)) - 1
            'An = Year(TimeSerial(h, M, S)) - 1900
    End Sub
    A+
    NB: Le split en mois et année n'est indiqué qu'a titre de démonstration ou d'exercice.

Discussions similaires

  1. Problème pour des ORDER BY dans des procédures stockées
    Par mathiaschoquet dans le forum SQL
    Réponses: 0
    Dernier message: 12/01/2012, 10h13
  2. Problème pour la Division avec NOT EXISTS
    Par myzu69 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 08/11/2007, 14h50
  3. problèmes pour faire des états paramétrés sur vb6
    Par k_alexis dans le forum VB 6 et antérieur
    Réponses: 0
    Dernier message: 16/10/2007, 18h59
  4. Réponses: 3
    Dernier message: 10/05/2007, 10h42
  5. [VB6]problèmes pour executer mon projet en VB
    Par Walowalo dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 29/04/2006, 19h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo