FORUM Tom's Hardware » Programmation » Autre » [VBA] peut on récupérer des information donné par un utilisateur?
 

[VBA] peut on récupérer des information donné par un utilisateur?

Il y a 261 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici
Ajouter une réponse



 Mot :   Pseudo :  
 
Bas de page
Auteur
 Sujet : [VBA] peut on récupérer des information donné par un utilisateur?
 
Plus d'informations

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 ?  :sarcastic:


Message édité par Angelo7 le 13-12-2005 à 10:58:36

zeb
Profil : Modérateur libre
Plus d'informations

J'ai lu dans ma boule de cristal qu'il s'agissait de VBA pour Excel. J'y ai vu aussi que c'est la fonction

WeekDay

qui t'intéresse.
 
Pour demander une information à l'utilisateur sous Excel/VBA, il y a plusieurs moyens :
 
1°)  Lire une valeur dans une cellule.
2°)  Utiliser la fonction [/fixed]InputBox[/fixed].
3°)  Créer un formulaire.

Plus d'informations

j'ai fait ca mais ma fonction weekday ne compile pa  

Code :
  1. Dim Jour, Nb_jour, Mois, Année, Message$, Message2$, Message3$, Titre$
  2.     Message = "Entrer le mois en chiffre (janvier= 01, décembre =12"
  3.     Message3 = "Entrer l'année"
  4.     Titre = "création du tableau"
  5.     Message2 = "Entrer le nombre de jour compris dans le mois"
  6.     Mois = InputBox(Message, Titre)
  7.     Année = InputBox(Message3$, Titre)
  8.     Nb_jour = InputBox(Message2, Titre)
  9.     Jour = WeekDay("1/Mois/Année" )


 
l'erreur est une erreur d'execution 13:  
type incompatible

zeb
Profil : Modérateur libre
Plus d'informations

Ou la la !! Il faut que tu revois l'utilisation des guillemets. Même problème que ton post précédent avec tes semaine1, semaine2.
 
"Mois" est une suite de 4 lettres formant une chaîne de caractères.
Mois est une variable contenant une valeur.
 
Ecris

Code :
  1. "1/" & Mois & "/" & Année

au lieu de

Code :
  1. "1/Mois/Année".


 
Comprends-tu pourquoi ?
 

Plus d'informations

j'ai un peu du mal avec ca (je fais du vba que depuis peu)  
J'ai fais du C et ya pas tout ces guillemets pour appeler une variable  
Par contre pourquoi "1/" & Mois & "/" & Année et non  
"1/" & Mois  "/" & Année ou "1/" & Mois & "/" & Année &  
la je comprend pas  
d'ailleur si tu connais un site qui explique cela simplement ca m'interesse ainsi ca m'evitera de faire toujours les meme erreurs

Plus d'informations

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

zeb
Profil : Modérateur libre
Plus d'informations

Arrête avec les questions bêtes à l'utilisateur. A partir d'une seule date ( Veuillez saisir une date ? ), tu peux tout calculer : Mois, année, nombre de jours dans l'année, numéro de la semaine, etc. Je ne te force pas la main, et je continuerai à te répondre quand même si tu ne le fais pas mais par principe fais-le. C'est trop horrible de voir ça. Fin de la parenthèse.
 
A propos de WeekDay, vas voir dans l'aide pour commencer ta semaine par Lundi.
 
Que signifie bloquer la ligne ?

Plus d'informations

Pour le week day j'ai pas besoin de mettre lundi ou mardi juste le jour 1,2 par contre j'avais besoin de cette fonction pour enlever les weekend  
Bloquer = empecher toute insertions  
 
le coup du calcul je vois pas trop comment faire:  
je suis obliger au demander le mois et l'année car mon tableau est un tableau d'un mois par exemple décembre avec tout les jours et l'année car pour connaitre 1er jour du mois  
apres pour le nombre de jours dans le mois c'est vrai je peut le calculer, par contre le numéro de la semaine la je vois pas  

zeb
Profil : Modérateur libre
Plus d'informations

Cadeau ( c'est noël )

Code :
  1. Function DaysInAYear(d As Date) As Integer
  2.   DaysInAYear = DateAdd("yyyy", 1, d) - d
  3. End Function
  4. Function DaysInAMonth(d As Date) As Integer
  5.   DaysInAMonth = DateAdd("m", 1, d) - d
  6. End Function
  7. Function DaysInThisYear(year As Integer) As Integer
  8.   DaysInThisYear = DaysInAYear("1/1/" & year)
  9. End Function
  10. Function DaysInThisMonth(month, year As Integer) As Integer
  11.   DaysInThisMonth = DaysInAMonth("1/" & month & "/" & year)
  12. End Function
  13. Function WeekNumber(d As Date) As Integer
  14.     'ISO 8601
  15.     WeekNumber = DatePart("ww", d, vbMonday, vbFirstFourDays)
  16. End Function


 
La norme ISO 8601 c'est celle qui définit Lundi comme premier jour de la semaine. Alors tu vas quand même me mettre Lundi comme premier jour de WeekDay S'IL TE PLAIT !.
 
Tu peux demander le mois et l'année dans le même InputBox ou à titre d'exercice dans un formulaire adhoc.
 
Pour "bloquer une cellule", regarde l'aide sur la protection des feuilles et des classeurs ainsi que sur le verrouillage des cellules
( Outils/Protection/Protéger la feuille, Format de cellule/Protection/Verrouillée )
 
Sinon, j'ai fait ça, c'est joli non :

Code :
  1. Sub Essai()
  2.     Dim i As Integer
  3.     Dim d As Date
  4.     Dim wd As Integer
  5.     Dim Mois, Année As Integer
  6.    
  7.     Mois = 1
  8.     Année = 2005
  9.    
  10.     d = "1/" & Mois & "/" & Année
  11.    
  12.     For i = 0 To DaysInAMonth(d) - 1
  13.         Range("A" & i + 1).Formula = d + i
  14.         wd = WeekDay(d + i, vbMonday)
  15.         Select Case wd
  16.             Case 6:
  17.                 If i = 0 Then
  18.                     Range("B" & i + 1).Formula = "RIEN"
  19.                 Else
  20.                     Range("B" & i + 1).Formula = "TA FONCTION"
  21.                 End If
  22.             Case 7: Range("B" & i + 1).Formula = "RIEN"
  23.             Case Else
  24.                     Range("B" & i + 1).Formula = wd
  25.         End Select
  26.     Next
  27. End Sub


 
Quoi faire à la place de RIEN et de TA FONCTION ?
Là, faudrait voir à bosser un peu, mon gars.

Plus d'informations

deja pour le nombre de jour j'ai fais cette fonction

Code :
  1. Function Nombre_jour(Le_mois As Integer, Lannee As Integer) As Integer
  2.     If Le_mois = 1 Or Le_mois = 3 Or Le_mois = 5 Or Le_mois = 7 Or Le_mois = 8 Or Le_mois = 10 Or Le_mois = 12 Then
  3.     Nombre_jour = 31
  4.     ElseIf Le_mois = 4 Or Le_mois = 6 Or Le_mois = 9 Or Le_mois = 11 Then
  5.     Nombre_jour = 30
  6.     Else
  7.         If Lannee Mod (4) = 0 Then
  8.             Le_mois = 29
  9.         Else: Le_mois = 28
  10.         End If
  11.     End If
  12. End Function

Plus d'informations

ha j'avias pas lu ton dernier message avant de mettre celui ou ya ma fonction Nombre_jour  
je vais voir ce que tu as fais

zeb
Profil : Modérateur libre
Plus d'informations

:) Allez au boulot. Il faut tout comprendre et faire des tas de choses par toi même maintenant. :D Et surtout, n'oublie pas, google est ton meilleur ami.

Plus d'informations

T'inquiete pas je fais pas que posé des question je cherche aussi  
le preuve ma fonction Nombre_jour bon apparamment elle va pas servir mais bon  
et sur google il y a pas beaucoup d'info c'est pour ca j'te demandais si il y a un site qui explique bien  
Moi jsuis aller sur exel labo  mais c'est pas génial :(


Aller à :
Ajouter une réponse
  FORUM Tom's Hardware » Programmation » Autre » [VBA] peut on récupérer des information donné par un utilisateur?
 

Annonces Google
Publicité
Les ressources relatives