comment récuperer des information donner par l'utilisateur?

comment récuperer des information donner par l'utilisateur? - VB/VBA/VBS - Programmation

Marsh Posté le 13-12-2005 à 10:52:22    

Bonjour à tous,  
je souhaiterais faire une petite application qui construisse un tableau avec les dates en enlevant les week end  
J'ai eu donc comme idée de demander à l'utlisateur le 1er du mois tombe quel jour (lundi, mardi...) puis en fonction de la réponse enlevé les bonne date  
Le seul problème c'est que je sais vraiment pas comment faire pour :
- demander l'information à l'utilisateur  
- récupérer cette info
 
quelqu'un pourrai m'aider ? :??:

Message cité 1 fois
Message édité par Angelo38 le 13-12-2005 à 14:18:07
Reply

Marsh Posté le 13-12-2005 à 10:52:22   

Reply

Marsh Posté le 13-12-2005 à 11:01:30    

Angelo38 a écrit :

Bonjour à tous,  
je souhaiterais faire une petite application qui construisse un tableau avec les dates en enlevant les week end  
J'ai eu donc comme idée de demander à l'utlisateur le 1er du mois tombe quel jour (lundi, mardi...) puis en fonction de la réponse enlevé les bonne date  
Le seul problème c'est que je sais vraiment pas comment faire pour :
- demander l'information à l'utilisateur  
- récupérer cette info
 
quelqu'un pourrai m'aider ? :??:


 
Si tu veux construire un tableau avec les dates et les jours excepté les week-end, tu n'as pas besoin de l'intervention de l'utilisateur :pt1cable:   ! Tu prend une date et un jour de réference, tu construit ton tableau avec ça ! La suite ce sont des maths. Tu sais qu'une journée fait que 24 heure, qu'une semaine est composé de 7 jours, les mois de 28,30,31 selon les cas (annéer bixestile que tu devras gérer) et qu'un mois est composé de 4 semaine. A toi de jouer, petit scarabet !  :D


Message édité par cvb le 13-12-2005 à 11:02:51
Reply

Marsh Posté le 13-12-2005 à 11:03:29    

Utilise la fonction InpuBox:
http://msdn.microsoft.com/library/ [...] putBox.asp


---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
Reply

Marsh Posté le 13-12-2005 à 11:11:12    

j'suis d'accord avec toi cvb mais pour le jour de référence il faut bien demander à l'utlisateur non? ou alors calculer à partir d'un jour au hasard (par ex aujourd'hui) et en déduir les autre? je pense que cette solution risque d'etre longue pour moi car l'application  doit rester en place assez longtemps donc pour faire ca sur plusieur année ca risque d'etre difficile  
de plus le cas année bixestile et des mois et assez complexes enfin je l'ai deja fais mais en langage c et vu que je débute en vba je pense que ca va etre trop compliqué pour moi

Reply

Marsh Posté le 13-12-2005 à 11:23:43    

Angelo38 a écrit :

j'suis d'accord avec toi cvb mais pour le jour de référence il faut bien demander à l'utlisateur non? ou alors calculer à partir d'un jour au hasard (par ex aujourd'hui) et en déduir les autre? je pense que cette solution risque d'etre longue pour moi car l'application  doit rester en place assez longtemps donc pour faire ca sur plusieur année ca risque d'etre difficile  
de plus le cas année bixestile et des mois et assez complexes enfin je l'ai deja fais mais en langage c et vu que je débute en vba je pense que ca va etre trop compliqué pour moi


 
Non c'est pas compliqué et non tu n'as pas besoin de demander à l'utilisateur ! S'il te mets une date eronné, tout tes calculs sont faux aprés. Enorme risque !! Pourquoi faire ça pour plusieurs années ?? Ton calcul est automatique ! Suffit une prende une date de réfrence comme le 1er janvier de l'année courante !
 
Je prend un exemple : aujourd'hui nous somme le mercredi 13/12/05 la semaine prochaine le mercredi sera un 21 et ainsi de suite ! Je n'ai pas forcé : 13 +7 . C'est la même chose pour tous les jours. Ca c'est pour l'année 2005.
Pour 2006, le 13 tombera un jeudi, pour 2007, un vendredi.....!  
 
Je te le redis, pour simplifier les calculs, prend l'année courante et la date/jour du 1er janvier de l'année en question pour construite ton calendrier de l'année "courante" et ça se fera tout seul...
 
Pour les années bixestile, elle sont divisible par 4 ! C'est donc tout aussi simple. Quand tu dévisera ton année par 4 et que le resultat sera juste (attention à ne pas arrondir), ton année sera bixestile et puis voilà !
 
Honettement si tu as fais du C++, le VB(A) te paraître enfantin à coté ! Et le principe est le même à part que la syntaxe change un peu...
 
@+


Message édité par cvb le 13-12-2005 à 11:28:24
Reply

Marsh Posté le 13-12-2005 à 11:52:43    

Angelo j'ai répondu sur montgallet
 
set toto = inputbox("cé koi ton premier jour?" )
 
msgbox toto

Reply

Marsh Posté le 13-12-2005 à 12:11:42    

ok merci mfauxock je vais essayé

Reply

Marsh Posté le 13-12-2005 à 13:02:43    

me suis trompé il ne faut pas mettre le set !!!!
 
toto = inputbox("cé koi ton premier jour?" )  
 
msgbox toto

Reply

Marsh Posté le 13-12-2005 à 13:12:32    

oui j'avais trouvé pour l'erreur mais ton msgbox je l'utilise pas  
 
question de noob (j'avou je pourrai chercher j'ai pas encore essayé de trouver la réponse lol) pour le switch case c'est quoi la syntaxe?

Reply

Marsh Posté le 13-12-2005 à 13:28:06    

Oh le fénéant !!!
 
Function Bonus(performance, salary)
    Select Case performance
        Case 1
            Bonus = salary * 0.1
        Case 2, 3
            Bonus = salary * 0.09
        Case 4 To 6
            Bonus = salary * 0.07
        Case Is > 8
            Bonus = 100
        Case Else
            Bonus = 0
    End Select
End Function
 
aide vba select case

Reply

Marsh Posté le 13-12-2005 à 13:28:06   

Reply

Marsh Posté le 13-12-2005 à 13:30:30    

lol c'est vrai par contre pour l'aide vba fallait il encor que je connaisse la syntaxe select case  
Et puis pas si fénéant je cherchais quand même en attendant ta réponse  

Reply

Marsh Posté le 13-12-2005 à 14:27:31    

tres bien maintenant j'ai récupérer le 1er jour donc je commence au jour  
- 2 si le 1er du mois est un dimanche ,  
- 3 si le 1er du mois est un samedi  
- 1 dans tout les autres cas  
 
en effet je n'affiche pas les samedi et dimanche  
 
ce que je veux faire maintenant c'est faire tout les autres jours (pour l'instant j'ai que le 1er jour)  
par exemple si le 1er du mois est un mardi  
en a1 il y aura 1
     a2 -> 2
     a3 -> 3
     a4 -> 4
     a5 -> la c'est samedi donc j'affiche Sem44 par ex et je fais une fonction somme de la semaine passer  
     a6 -> donc dimanche y aura rien sur toute la ligne on peut la bloquer?
     a7->7  
     ...
 
la je reseche pour faire ca  
 
je vous met le code qui m'a permis d'avoir le premier jour

Code :
  1. Dim Jour, Nb_jour, Semaine, Mois, Année, Message$, Message2$, Message3$, Message4$, Titre$
  2.     Message = "Entrer le mois en chiffre (janvier= 01, décembre =12)"
  3.     Message2 = "Entrer le nombre de jour compris dans le mois"
  4.     Message3 = "Entrer l'année"
  5.     Message4 = "indiquer le numero de la premiere semaine (ex: Sem 44)"
  6.     Titre = "création du tableau"
  7.    
  8.     Mois = InputBox(Message, Titre)
  9.     Année = InputBox(Message3, Titre)
  10.     Nb_jour = InputBox(Message2, Titre)
  11.     Semaine = InputBox(Message4, Titre)
  12.     Jour = WeekDay("1/" & Mois & "/" & Année)
  13.     Range("A1" ).Select
  14.             Select Case Jour
  15.             'si le 1er est un dimanche commencer le tableau par le 2
  16.             Case "1"
  17.                 ActiveCell.FormulaR1C1 = "2"
  18.             'si le 1er est un samedi commencer le tableau par le 3
  19.             Case "7"
  20.                 ActiveCell.FormulaR1C1 = "3"
  21.             'sinon commencer par le 1
  22.             Case Else
  23.                 ActiveCell.FormulaR1C1 = "1"
  24.         End Select
  25.     Next i

Reply

Marsh Posté le 13-12-2005 à 17:18:23    

bon je suis arriver à ce code y aun truc qui m'embette encore c'est que ca commence en a1 or je veux mettre un titre du genre date assez gros et donc faire commencer le traitement en a4  
voici le code  

Code :
  1. Function DaysInAMonth(d As Date) As Integer
  2.   DaysInAMonth = DateAdd("m", 1, d) - d
  3. End Function
  4. Function DaysInThisMonth(month, year As Integer) As Integer
  5.   DaysInThisMonth = DaysInAMonth("1/" & month & "/" & year)
  6. End Function
  7. Function WeekNumber(d As Date) As Integer
  8.     WeekNumber = DatePart("ww", d, vbMonday, vbFirstFourDays)
  9. End Function
  10. Sub Essai()
  11.     Dim i As Integer, nb As Integer
  12.     Dim d As Date
  13.    
  14.     Dim wd As Integer
  15.     Dim Mois, Année As Integer
  16.    
  17.    
  18.     Mois = 11
  19.     Année = 2005
  20.    
  21.     d = "1/" & Mois & "/" & Année
  22.     nb = WeekNumber(d)
  23.     For i = 0 To DaysInAMonth(d) - 1
  24.         Range("A" & i + 1).Formula = d + i
  25.         wd = WeekDay(d + i, vbMonday)
  26.         Select Case wd
  27.             Case 6:
  28.                 Range("A" & i + 1).Formula = "Sem" & nb
  29.                 nb = nb + 1
  30.             Case 7: Range("A" & i + 1).Formula = "RIEN"
  31.         End Select
  32.     Next
  33. End Sub


que dois je change perso je pensais au Rangequi est juste sous le for mais quand je modifier rien ne fonctionne plus (enfin pas comme je veux)

Reply

Marsh Posté le 14-12-2005 à 08:57:14    

Salut angelo c'est bien range qui est à modifier mais tous les range (lignes 26, 30 et 32) en
 
        Range("A" & i + 4)
 
bon courage


---------------
Je bidouillle c'est sur... Mais j'essaye de faire en sorte que ça marche ;-)
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed