Comment suivant une date remettre à 1 une incrémentation en vba

coupidon Messages postés 98 Statut Membre -  
Frenchie83 Messages postés 2254 Statut Membre -
Bonjour,

Je me fait un projet, j'ai une feuille avec une Base de donnée, j'ai un userform qui permet une fois enregistrer les données incrément un à chaque saisi sur la cellule A8.
Mais j'aimerais suivant une année nouvelle que l'incrémentation reprenne à 1 à partir de la nouvelle année.

donc sur la feuille de Base de Donnée, aprés saisi avec l'userform.
quand la ligne est comme tel en
A8 B8
se mettra à 1 quand 1 02/03/2017 nouvelle année
2 05/10/2016 même année
dois se remettre à 1 02/02/2016 quand nouvelle année
3 25/04/2015 même année
2 12/03/2015 même année
première saisi 1 01/02/2015 même année

pour résumer, tant que l'année change pas cela s'incrément normalement, mais quand l'année change le premier reprenne l'ordre à 1 puis incrément normalement jusqu'à une prochaine nouvelle année, et, ainsi de suite.
Est-ce possible à réaliser.....?

voici mon projet : https://www.cjoint.com/c/FEqlEW6SFa0

5 réponses

  1. Frenchie83 Messages postés 2254 Statut Membre 339
     
    Bonjour
    remplacez
    [A9] = [A10] + 1

    par
    If Year(Cells(9, 2)) <> Year(Cells(10, 2)) Then [A9] = 1 Else [A9] = [A10] + 1

    Cdlt
    0
    1. coupidon Messages postés 98 Statut Membre 1
       
      génial cool sa fonctionne, bravo pour ta maitrise en VBA
      0
  2. coupidon Messages postés 98 Statut Membre 1
     
    Comme tu as mon projet en main, lol
    et que tu est super doué, j'aimerais te demander comment on fait pour afficher un résultat dans une combobox après un calcul. Et que cela s'affiche sur l'userform comme tu as fait pour le prix, mais sur une nouvelle comboBox11 par exemple.

    J'ai tester plein de truc mais sa veux pas s'afficher, pourtant je me suis inspiré de ton principe avec la combobox1.

    en gros j'aimerais que l'on fasse l'addition du résultat que donne la (textbox10+textbox11)-textbox2 qui me donnerais le restant de la somme à devoir mais qu'elle apparaisse comme sur la textbox11 qu'il faut créer ?

    accepte tu de m'aider?
    0
  3. Frenchie83 Messages postés 2254 Statut Membre 339
     
    Bonjour
    J'ai recombiné les "sub Textbox10_KeyPress" avec "sub Textbox10_change" pour n'en faire qu'une "sub Textbox10_change "
    Si vous rajouter une textbox(et non pas une combobox) pour moi cela devenait la TextBox12 et appliquez la formule qui récupère les valeurs des cellules à inclure dans la formule de la ligne 8, ce qui fait
    TextBox12 = [G8] + [F8] - [I8] (rectifiez si je me trompe de cellule)

    Private Sub Textbox10_change() 'KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    ' Cette procèdure permet si la valeur n'est pas comprise entre 0 et 9 et qu'elle n'est pas un backspace
        'If InStr(1, "0123456789", Chr(KeyAscii)) = 0 And KeyAscii <> 8 Then
           'MsgBox "Caractère non autorisé"
           'KeyAscii = 0
        'End If
        [G8] = TextBox10
        TextBox12 = [G8] + [F8] - [I8]
        [J8] = TextBox2.Value
    'End Sub
    
    'Private Sub Textbox10_change()
    ' cette  procédure permet de renseigner  la cellule G8 en fonction de la donnée
    ' écrite dans le formulaire à la parti Kilomètres
        Sheets("BASE de DONNEE").Select
        [G8] = TextBox10.Value
        If [G8] < 10 Then
            [H8] = 0
        ElseIf [G8] <= 20 Then
            [H8] = [G8] * 0.18
        ElseIf [G8] <= 40 Then
            [H8] = [G8] * 0.2
        ElseIf [G8] <= 80 Then
            [H8] = [G8] * 0.22
        ElseIf [G8] > 80 Then
            [H8] = [G8] * 0.3
        End If
    End Sub

    Cdlt
    0
    1. coupidon Messages postés 98 Statut Membre 1
       
      bonjour frenchie83 merci pour ton aide

      alors c'est pas tout à fait cela, sa me déconcerte le VBA j'arrive pas à saisir le principe.

      En gros comment afficher le résultat dans une textbox12 par exemple la valeur H8 qui à était calculer avec les conditions if? sur la textbox10

      je comprend pas comment une textbox affiche un résultat quelconque quand on fait un calcul. Sa semble simple mais cela ne fonctionne pas avec moi ? lol

      le résultat de la textbox10, comment la récupérer pour qu'elle s'affiche sur un textbox afin de voir si le calcul est correcte....

      en gros voilà la question
      0
  4. Frenchie83 Messages postés 2254 Statut Membre 339
     
    RE
    Si j'ai bien compris.
    Ajoutez en dernière ligne de Private Sub Textbox10_change()
    TextBox12 = [H8]

    Cdlt
    0
    1. coupidon Messages postés 98 Statut Membre 1
       
      pour afficher un resultat sur un autre textbox il faut être sur un textbox qui est le dernier et on affiche a la fin d'une procédure comme tu as fait?
      0
      1. Frenchie83 Messages postés 2254 Statut Membre 339 > coupidon Messages postés 98 Statut Membre
         
        on affiche a la fin d'une procédure comme tu as fait Je mets le résultat à la fin, parce qu'il faut bien attendre que les calculs soient faits.
        Explication dans l'ordre chronologique:
        La textbox10 est recopiée dans la cellule G8
        H8 est le résultat de G8 multiplié par un coefficient.
        Comme il nous faut récupérer ce résultat, on le chercher directement dans H8 que l'on met dans la textbox12.
        0
      2. coupidon Messages postés 98 Statut Membre 1 > Frenchie83 Messages postés 2254 Statut Membre
         
        cela deviens nettement plus clair, vous avez raison.. merci du coup de main c'est du grand art...
        encore un petit truc ou astuce j'essais de ranger mes textbox et combobox pour qu'avec la tabulation ne parte pas de haut au milieu à gauche à droite...
        vous faites comment, pour que cela soit chronologique pour l'encodage par exemple
        0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Frenchie83 Messages postés 2254 Statut Membre 339
     
    Dans la feuille VBA
    1- sélectionnez "Formulaire"
    2- Affichage/Ordre tabulation
    3- déplacez avec l'aide des boutons "Monter "ou "Descendre" les contrôles dans l'ordre voulu.
    0