Soucis de bouton VBA excel

gao77610 Messages postés 4 Date d'inscription mardi 30 août 2005 Statut Membre Dernière intervention 5 mai 2012 - 26 sept. 2009 à 19:26
cs_Ayr Messages postés 221 Date d'inscription mercredi 9 avril 2003 Statut Membre Dernière intervention 13 décembre 2009 - 26 sept. 2009 à 22:19
Bonjour à tous

Très novice dans le VBA, j'ai un petit soucis de codage :
Quand je clic sur un bouton cela ecrit la date dans A1 et B1 un chiffre, ça OK
Le lendemain: toujours sur le meme bouton clic
Date va en A2 pas de soucis, mais le chiffre reste en B1 et je voudrais qu'il ailles en B
Voici mon Code:
Sub Macro3()

Dim DateSortie As Range, DateStock As Range, DateHS As Range
Set DateSortie = Sheets("Sortie").Range("A65536").End(xlUp)
Set DateStock = Sheets("Stock").Range("A65536").End(xlUp)
Set DateHS = Sheets("HS").Range("A65536").End(xlUp)
DateSortie.Offset(IIf(Date <> DateSortie, 1, 0), 0).Value = Date
DateStock.Offset(IIf(Date <> DateStock, 1, 0), 0).Value = Date
DateHS.Offset(IIf(Date <> DateHS, 1, 0), 0).Value = Date
Sheets("Sortie").Range("B3") = Sheets("Sortie").Range("B3") - 1
Sheets("HS").Range("B3") = Sheets("HS").Range("B3") + 1
Sheets("Stock").Range("B3") = Sheets("Stock").Range("B3") - 1
Sheets("Ftech").Range("B7") = Sheets("Ftech").Range("B7") + 1
Sheets("Ftech").Range("B8") = Sheets("Ftech").Range("B8") - 1
End Sub

Ai-je bien ete explicite

Merci pour les réponses à l'avance

5 réponses

cs_Ayr Messages postés 221 Date d'inscription mercredi 9 avril 2003 Statut Membre Dernière intervention 13 décembre 2009 2
26 sept. 2009 à 19:42
Bonjour,

Au vu de ton code, ça m'a l'air logique...

Tes référence de cellules pour les dates sont décallées de 1 chaque fois qu l'on change de jour mais celles pour les valeurs numériques sont données en dur : B3, B7, B8.

J'ai raté quelque chose ?
0
gao77610 Messages postés 4 Date d'inscription mardi 30 août 2005 Statut Membre Dernière intervention 5 mai 2012
26 sept. 2009 à 19:49
Bonjour,

Oui c'est là la problème, je n'arrive pas a codifier le changement de cellule.
Par exemple B3 devient B4 le lendemain, j'ai essayé beaucoup de formule mais ça ne passe pas

Et merci pour la réponse
0
cs_Ayr Messages postés 221 Date d'inscription mercredi 9 avril 2003 Statut Membre Dernière intervention 13 décembre 2009 2
26 sept. 2009 à 20:03
Ha ok,

Tu ne peux plus tester la date car tu l'as déjà modifiée au moment ou tu incrémente tes valeurs, donc tu doit faire un test pour les deux avant de changer la date.

Du genre:

If Date <> DateSortie Then
    DateSortie.Offset(1, 0).Value = Date
    ' ici code avec décalage pour valeur numérique car dates différentes
  Else
    ' Pas la peine de changer la date
    ' mais incrément de la valeur numérique au même endroit.
End IF


Ou tout autre variante qui t'arrange.

Et ainsi de suite pour les autres.
0
gao77610 Messages postés 4 Date d'inscription mardi 30 août 2005 Statut Membre Dernière intervention 5 mai 2012
26 sept. 2009 à 21:36
Bonsoir,

Merci pour la réponse, mais j'apprends en VBA et je n'est aucune idée comment écrire ce que tu me dit, les autres codes on m'a un peu aidé et je les ai adapté à ma sauce

Merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Ayr Messages postés 221 Date d'inscription mercredi 9 avril 2003 Statut Membre Dernière intervention 13 décembre 2009 2
26 sept. 2009 à 22:19
Si on suit le principe de ta macro, voilà ce que ça peut donner mais il y à toujours d'autres façons de coder. Tu utilise déjà les offsets pour te décaler d'une ligne, il fallait le faire pour les valeurs numériques aussi.
Public Sub IncrementeStock()
    Dim DateSortie      As Range
    Dim DateStock       As Range
    Dim DateHS          As Range
    Dim DateActuelle    As Date
    Set DateSortie = Sheets("Sortie").Range("A65536").End(xlUp)
    Set DateStock = Sheets("Stock").Range("A65536").End(xlUp)
    Set DateHS = Sheets("HS").Range("A65536").End(xlUp)
    DateActuelle = Date
    If DateSortie.Value <> DateActuelle Then
        DateSortie.Offset(1, 0).Value = DateActuelle
        DateStock.Offset(1, 0).Value = DateActuelle
        DateHS.Offset(1, 0).Value = DateActuelle
        DateSortie.Offset(1, 1).Value = DateSortie.Offset(0, 1).Value - 1
        DateStock.Offset(1, 1).Value = DateStock.Offset(0, 1).Value - 1
        DateHS.Offset(1, 1).Value = DateHS.Offset(0, 1).Value + 1
      Else
        DateSortie.Offset(0, 1).Value = DateSortie.Offset(0, 1).Value - 1
        DateStock.Offset(0, 1).Value = DateStock.Offset(0, 1).Value - 1
        DateHS.Offset(0, 1).Value = DateHS.Offset(0, 1).Value + 1
    End If
    Set DateSortie = Nothing
    Set DateStock = Nothing
    Set DateHS = Nothing
End Sub


PS : Je n'ai pas inclu les modifications pour la feuille "ftech" car je ne sais pas si celà suit le même principe. A toi de voir.

Ca me fait très plaisir d'aider mais tu doit galerer un peu et chercher par toi même si tu veux progresser dans la programmation. Tu doit accepter de ne pas trouver instantanément un résultat, apprendre demande de la patience et de faire des erreurs (en pagaille !), sinon tu n'aura d'autres recours que d'attendre eternellement que quelqu'un puisse t'aider et tu n'aura pas la satisfaction d'avoir trouvé par toi même .
0
Rejoignez-nous