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

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. 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. génial cool sa fonctionne, bravo pour ta maitrise en VBA
      0
  2. 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
    1. 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. 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
    2. RE
      Si j'ai bien compris.
      Ajoutez en dernière ligne de Private Sub Textbox10_change()
      TextBox12 = [H8]

      Cdlt
      0
      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
      2. @coupidonon 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
      3. @Frenchie83cela 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
    3. 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