Se connecter avec
S'enregistrer | Connectez-vous

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

Dernière réponse : dans Programmation

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: 
Lassé par la pub ? Créez un compte
Expert Programmation

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.

j'ai fait ca mais ma fonction weekday ne compile pa
  1. Dim Jour, Nb_jour, Mois, Année, Message$, Message2$, Message3$, Titre$
  2.  
  3.  
  4. Message = "Entrer le mois en chiffre (janvier= 01, décembre =12"
  5. Message3 = "Entrer l'année"
  6. Titre = "création du tableau"
  7. Message2 = "Entrer le nombre de jour compris dans le mois"
  8. Mois = InputBox(Message, Titre)
  9. Année = InputBox(Message3$, Titre)
  10. Nb_jour = InputBox(Message2, Titre)
  11. Jour = WeekDay("1/Mois/Année")


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

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
  1. "1/" & Mois & "/" & Année
au lieu de
  1. "1/Mois/Année".


Comprends-tu pourquoi ?

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

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

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 ?

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
Expert Programmation

Cadeau ( c'est noël )
  1. Function DaysInAYear(d As Date) As Integer
  2. DaysInAYear = DateAdd("yyyy", 1, d) - d
  3. End Function
  4.  
  5. Function DaysInAMonth(d As Date) As Integer
  6. DaysInAMonth = DateAdd("m", 1, d) - d
  7. End Function
  8.  
  9. Function DaysInThisYear(year As Integer) As Integer
  10. DaysInThisYear = DaysInAYear("1/1/" & year)
  11. End Function
  12.  
  13. Function DaysInThisMonth(month, year As Integer) As Integer
  14. DaysInThisMonth = DaysInAMonth("1/" & month & "/" & year)
  15. End Function
  16.  
  17. Function WeekNumber(d As Date) As Integer
  18. 'ISO 8601
  19. WeekNumber = DatePart("ww", d, vbMonday, vbFirstFourDays)
  20. 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 :
  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.

deja pour le nombre de jour j'ai fais cette fonction
  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

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 :( 
Lassé par la pub ? Créez un compte