sobeit1
Messages postés32Date d'inscriptionlundi 6 novembre 2000StatutMembreDernière intervention29 avril 2005
-
1 févr. 2005 à 10:57
adn28
Messages postés91Date d'inscriptionmercredi 9 février 2005StatutMembreDernière intervention16 mars 2005
-
16 févr. 2005 à 16:48
Salut, j'ai créé un programme sur VBA excel qui, en fonction d'un tableau feuil 3, réécrit des infos dans un second tableau feuil 2.
Certains données y sont écrite correctement mais d'autres, notament celles qui sont comprise de 8h à midi, sont totalement ignorées.
si qlqu'un peut m'aider à comprendre merci.
Dim h, l As Integer
Dim vard5, vard6, vard7 As Date
Dim var1, var2 As String
Sheets("feuil3").Select
For h = 2 To 20
Sheets("feuil3").Select
vard5 = Range("feuil3!b" & h).Value
vard6 = Range("feuil3!c" & h).Value
vard7 = Range("feuil3!d" & h).Value
'selection du jour et création de variable pour le début de semaine
'Si la salle est identique dans les 2 tableaux alors copie des valeurs
For l = 2 To 30
var1 = Range("feuil2!b" & l).Value
var2 = Range("feuil3!i" & h).Value
If var1 = var2 Then
Select Case jour
Case "lundi"
Select Case HeureArr
Case "7:59" To "11:59"
Range("feuil2!c" & l) = Range("feuil3!g" & h)
Select Case HeureDep
Case "12:01" To "18:00"
Range("feuil2!d" & l) = Range("feuil3!g" & h)
Case "18:01" To "21:00"
Range("feuil2!e" & l) = Range("feuil3!g" & h)
End Select
Case "12:00" To "17:59"
Range("feuil2!d" & l) = Range("feuil3!g" & h)
Select Case HeureDep
Case "18:01" To "21:00"
Range("feuil2!e" & l) = Range("feuil3!g" & h)
End Select
Case "18:00" To "21:00"
Range("feuil2!e" & l) = Range("feuil3!g" & h)
End Select
Case "mardi"
Select Case HeureArr
Case "8:00" To "11:59"
Range("feuil2!f" & l) = Range("feuil3!g" & h)
Select Case HeureDep
Case "12:01" To "18:00"
Range("feuil2!g" & l) = Range("feuil3!g" & h)
Case "18:01" To "21:00"
Range("feuil2!g" & l) = Range("feuil3!g" & h)
Range("feuil2!h" & l) = Range("feuil3!g" & h)
End Select
Case "12:00" To "17:59"
Range("feuil2!g" & l) = Range("feuil3!g" & h)
Select Case HeureDep
Case "18:01" To "21:00"
Range("feuil2!h" & l) = Range("feuil3!g" & h)
End Select
Case "18:00" To "21:00"
Range("feuil2!h" & l) = Range("feuil3!g" & h)
End Select
Case "mercredi"
Select Case HeureArr
Case "8:00" To "11:59"
Range("feuil2!i" & l) = Range("feuil3!g" & h)
Select Case HeureDep
Case "12:01" To "18:00"
Range("feuil2!j" & l) = Range("feuil3!g" & h)
Case "18:01" To "21:00"
Range("feuil2!j" & l) = Range("feuil3!g" & h)
Range("feuil2!k" & l) = Range("feuil3!g" & h)
End Select
Case "12:00" To "17:59"
Range("feuil2!j" & l) = Range("feuil3!g" & h)
Select Case HeureDep
Case "18:01" To "21:00"
Range("feuil2!k" & l) = Range("feuil3!g" & h)
End Select
Case "18:00" To "21:00"
Range("feuil2!k" & l) = Range("feuil3!g" & h)
End Select
Case "jeudi"
Select Case HeureArr
Case "8:00" To "11:59"
Range("feuil2!l" & l) = Range("feuil3!g" & h)
Select Case HeureDep
Case "12:01" To "18:00"
Range("feuil2!m" & l) = Range("feuil3!g" & h)
Case "18:01" To "21:00"
Range("feuil2!m" & l) = Range("feuil3!g" & h)
Range("feuil2!n" & l) = Range("feuil3!g" & h)
End Select
Case "12:00" To "17:59"
Range("feuil2!m" & l) = Range("feuil3!g" & h)
Select Case HeureDep
Case "18:01" To "21:00"
Range("feuil2!n" & l) = Range("feuil3!g" & h)
End Select
Case "18:00" To "21:00"
Range("feuil2!n" & l) = Range("feuil3!g" & h)
End Select
Case "vendredi"
Select Case heure
Case "8:00" To "11:59"
Range("feuil2!o" & l) = Range("feuil3!g" & h)
Select Case HeureDep
Case "12:01" To "18:00"
Range("feuil2!p" & l) = Range("feuil3!g" & h)
Case "18:01" To "21:00"
Range("feuil2!p" & l) = Range("feuil3!g" & h)
Range("feuil2!q" & l) = Range("feuil3!g" & h)
End Select
Case "12:00" To "17:59"
Range("feuil2!p" & l) = Range("feuil3!g" & h)
Select Case HeureDep
Case "18:01" To "21:00"
Range("feuil2!q" & l) = Range("feuil3!g" & h)
End Select
Case "18:00" To "21:00"
Range("feuil2!q" & l) = Range("feuil3!g" & h)
End Select
Case "else"
MsgBox "La date indiquée tombe un Week-end" & Chr(10) & "veuillez modifier" & Chr(10) & "Merci"
Exit Sub
End Select
Sheets("feuil2").Select
h = h
End If
Next l
Next h
....
A voir également:
Probléme de copie de données entre tableau sous VBA excel
mrdep1978
Messages postés402Date d'inscriptionjeudi 25 novembre 2004StatutMembreDernière intervention 7 juin 20097 1 févr. 2005 à 15:06
Case "vendredi"
Select Case heure Case "8:00" To "11:59"
Range("feuil2!o" & l) = Range("feuil3!g" & h)
Au lieu de heure, ce ne serait pas HeureArr ?
Tu devrais mettre un Option Explicit en haut du module, afin d'obliger la déclaration des variables, ce qui éviterait ce genre d'erreurs.
De plus il y a un petit pb dans la déclaration de tes variables. En faisant ceci :
Dim h, l As Integer
Dim vard5, vard6, vard7 As Date
Dim var1, var2 As String
la seule variable définie en tant qu'Integer est l, la seule en Date est vard7 et la seule en String () est var2. Toutes les autres adoptent le type Variant (c'est à dire un type dans lequel tu peux stocker tout et n'importe quoi)
Il faut les déclarer comme ceci :
Dim h As Integer, l As Integer
Dim vard5 As Date, vard6 As Date, vard7 As Date
Dim var1 As String, var2 As String
sobeit1
Messages postés32Date d'inscriptionlundi 6 novembre 2000StatutMembreDernière intervention29 avril 2005 2 févr. 2005 à 09:10
je comprends bien mais il faut bien comprendre que ce systéme marche pour l'aprés midi et le soir.
"14:00" est bien compris entre "13:00" et "18:00" alors pourquoi ça ne marcherait pas pour "9:00" compris entre "8:00" et "12:00"????
Vous n’avez pas trouvé la réponse que vous recherchez ?
mrdep1978
Messages postés402Date d'inscriptionjeudi 25 novembre 2004StatutMembreDernière intervention 7 juin 20097 2 févr. 2005 à 09:49
Parce qu'en alphanumérique, il trie et compare caractère par caractère.
"8:00" : 1e caractère : 8
"9:00" : 1e caractère : 9
"12:00" : 1e caractère : 1
> 1< 8 < 9 > "12:00" < "8:00" < "9:00"
CQFD
Dans ces cas là, j'ai plutôt tendance à prendre des Integer.
HeureArr = CInt(Format$(vard6, "hhmm"))
HeureDep = CInt(Format$(vard7, "hhmm"))
Et ensuite :
Select Case HeureArr
Case 800 To 1159
Range("feuil2!l" & l) = Range("feuil3!g" & h)
Select Case HeureDep
Case 1201 To 1800
Range("feuil2!m" & l) = Range("feuil3!g" & h)
Case 1801 To 2100
Range("feuil2!m" & l) = Range("feuil3!g" & h)
Range("feuil2!n" & l) = Range("feuil3!g" & h)
End Select
Case 1200 To 1759
Range("feuil2!m" & l) = Range("feuil3!g" & h)
Select Case HeureDep
Case 1801 To 2100
Range("feuil2!n" & l) = Range("feuil3!g" & h)
End Select
Case 1800 To 2100
Range("feuil2!n" & l) = Range("feuil3!g" & h)
End Select
sobeit1
Messages postés32Date d'inscriptionlundi 6 novembre 2000StatutMembreDernière intervention29 avril 2005 1 févr. 2005 à 15:44
Merci mais ça ne change pas grand chose à la donne, ça ne marche tjrs pas.
Pour Nhenry, il y a en faite 2 périodes: l'une concerne "l'arrivée" de la personne
l'autre le départ
mon programme doit controler si la personne arrive le matin et ne repart que le soir (par exemple), si elle est présente toute la journnée alors j'écris dans un tableau son nom pour le matin l'aprés-midi et le soir, mais si elle ne vient que de 18h30 à 19h30, je ne l'inscris que dans le soir.
Le véritable probléme du programme c'est que chez moi, si la personne arrive de 8H à 12H, je n'arrive rien à inscrire, ni le matin, ni l'aprés midi, ni même le soir.
Je ne sais pas d'où vient le probléme.
ps: merci pour le select case heure, c'est parce que j'ai essayé 2, 3 truc avant de venir pleurer sur le site. Merci bcp. Toutefois je ne sais pas ce que c'est qu'un option Explicit.
sobeit1
Messages postés32Date d'inscriptionlundi 6 novembre 2000StatutMembreDernière intervention29 avril 2005 16 févr. 2005 à 12:33
salut,
tu aimerais savoir comment faire le lien entre excel et VBA,
en faite, il y a plusieur moyen, une fois que tu es dans excel et que tu as lancé VBA par le menu outil/macros/visual basic editor
tu saisie tes codes VBA directement dans les feuilles (en haut à gauche das vba), en définissant une fonction sub du style :
sub feuil1_open()
...code...
end sub
de la même façon, tu peux le faire à l'ouverture du fichier en inserant ton code sous thisworkbook
sub thisworkbook_open()
....code...
end sub
ou tu peux créer un userform, pratique si tu veux inserrer les données dans ton code comme une date ou un nom quelconque.
le seul truc c'est que si tu veux qu'il se lance à l'ouverture du dossier excel
tu dois inscrire dans thisworkbook la commande:
sub thisworkbook_open()
userform.show
end sub
Tu dois aussi terminer ton programme par unload.me
si je n'ai pas su répondre à ta question dsl, mais ta question est un peu vague....
Repose la moi en étant un peu plus précis si tu n'y arrive pas.
Bon courage, @+.