[Excel] Ajouter un numéro en fin de cellule

Résolu
Bonjour,

Le titre n'est pas très explicite...

Je m'explique :

J'ai actuellement un tableau excel pour des frais de personnes

Une ligne correspond à un compte de charge et j'ai donc :
en E4 "FRAIS JUILLET"
en F4 "FRAIS MONSIEUR PAUL"
en H4 "1"
en I4 "compte de charge"

admettons que la personne ait des frais sur 3 comptes de charges différents,

en E4-E5-E6 "FRAIS JUILLET 1"
en F4-F5-F6 "FRAIS MONSIEUR PAUL"
en H4 "1" H5 "2" H6 "3"
en I4-I5-I6 "charge pour chaque ligne"

sur le même tableau j'ai MONSIEUR JACQUES
en E7 "FRAIS JUILLET 1"
en F7 "FRAIS MONSIEUR JACQUES"
en H7 "1"
en I7 "charge"

je souhaite en fait que la cellule E7 devienne "FRAIS JUILLET 2" car j'ai changé de personne... Comment faire ? sachant qu'il est aussi possible que la cellule E10 par exemple soit "FRAIS JUIN"
(le texte "frais juillet" fait référence à une cellule qui est modifié manuellement pour chaque changement de personne, j'ai par exemple en D4 "FRAIS JUILLET" que j'ai écrit moi même)

En espérant être assez clair .....

Jordan

5 réponses

  1. Contributeur
    Bonjour,

    C'est possible.
    Remplace le code par :
    Sub NDFNom() 
        Dim lig As Long, nom As String, periode As String, cpt As Long, cpt2 As Long 
        Dim dict 
        Set dict = CreateObject("Scripting.Dictionary") 
        For lig = 4 To [F65536].End(xlUp).Row 
            If Cells(lig, 7) <> "" Then ' si periode saisie en G 
                periode = Cells(lig, 7).Value ' mémoriser période 
                If Not dict.Exists(periode) Then ' si nouvelle periode 
                    dict.Add periode, 0 ' l'ajouter au dictionary 
                End If 
            End If 
            If Cells(lig, 6) <> nom Or Cells(lig, 7) <> "" Then ' si nouveau nom ou début NDF en G 
                dict.Item(periode) = dict.Item(periode) + 1 ' incrémenter compteur NDf par période 
                nom = Cells(lig, 6) 'mémoriser nom 
                cpt2 = 1 
            Else 
                cpt2 = cpt2 + 1 
            End If 
            ' remplir E 
            Cells(lig, 5) = periode & " " & dict.Item(periode) 
            ' remplir H 
            Cells(lig, "H") = cpt2 
        Next lig 
    End Sub


    Je peux >>>> ? ;-)

    eric

    PS: n'oublie pas de mettre en résolu
    1
    1. Modérateur
      Bonjour,
      Tout dépends de comment vous souhaitez le faire...
      Jusqu'à ce jour, comment saisissiez vous en colonne E les : "FRAIS JUILLET 2" ?
      manuellement? en recopiant vers le bas? par macro?
      0
      1. Actuellement c'est ce que je souhaite obtenir en fait,

        à ce jour chaque cellule de E correspondant à des frais de juillet se nomme "FRAIS JUILLET" j'aimerais y rajouter un chiffre donc à chaque changement de personne.
        0
      2. Modérateur
        Par macro?
        0
      3. peu importe la méthode j'aimerais juste y arriver :)
        0
      4. Modérateur
        Bon alors, en fait, tu veux que soit remplacé le contenu de tes cellules colonne E par le contenu de la cellule + un numéro s'incrémentant s'il y a changement de nom.
        Pour obtenir un résultat comme ceci :
        E4 : FRAIS JUILLET 1      F4 : PAUL 
        E5 : FRAIS JUILLET 1      F5 : PAUL 
        E6 : FRAIS JUILLET 1      F6 : PAUL 
        E7 : FRAIS JUILLET 2      F7 : MARCEL 
        E8 : FRAIS JUILLET 3      F8 : JEAN-BERNARD 
        E9 : FRAIS JUIN 4         F9 : EDOUARD 
        E10 : FRAIS JUIN 4        F10 : EDOUARD 
        E11 : FRAIS AOUT 5        F11 : MICHEL
        etc...
        C'est bien cela?
        0
      5. a peu près, sauf que je pense que les cellules de la colonne E se référeront à une autre cellule afin que lors du passage de E8 "FRAIS JUILLET 3" à E9 "FRAIS JUIN" on n'ait pas "FRAIS JUIN 4" étant donné qu'il s'agirait de la première personne ayant des frais sur Juin

        Comprends tu ?
        0
    2. Bonjour et... Merci !!

      Difficile d'être clair dans ma demande mais tu as su comprendre ce que je cherchais eric (ou eriiic comme tu veux... :p )

      Je ne voulais pas être trop exigent il y avait plusieurs résultats possibles et en choisir un exact en particulier aurait peut être été trop demandé (du à l'éventuelle complexité d'une macro ou formule en particulier).

      Quoiqu'il en soit ce résultat me convient et je t'en remercie encore.
      0
      1. Pour continuer ... est il possible de numéroter les lignes en H selon le même principe ? par exemple j'ai 5 lignes en E qui sont NDF JUILLET 1 donc on aura 1-2-3-4-5 respectivement sur chaque ligne puis de nouveau 1-2-3... en fonction du nombre de ligne de l'autre note de frais.

        (resultat recherché déjà présent en H sur mon modele)
        0
        1. Contributeur
          Bonjour,

          Ca manque encore de rigueur dans la demande et les réponses fournies donc j'ai pris qcq libertés.

          Différences avec ton exemple : pas ligne sans n°, y compris la 1ère de la période.

          Par contre je pense que de prendre FRAIS JUILLET 4 en E12-13 est plus pratique, cela permet de ne demander qu'un changement de chiffre à chaque changement de F et pas de recherche du type "si F existe déjà plus haut alors reprendre le E correspondant".

          Je suppose que tu as mis ça pour alléger le travail.
          Mais ça heurte trop ma logique d'avoir 2 'NDF JUILLET 2' qui concerne deux notes de frais différentes pour 2 personnes différentes.
          Toutes les NDF d'une période ont un n° différent même si elles sont séparées par une autre période.

          Toute la colonne E est traitée jusqu'au dernier nom en F.

          http://www.cijoint.fr/cjlink.php?file=cj201108/cij21HxI5Y.xls

          eric
          -1