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

Résolu
Missow -  
eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   -
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. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    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
  2. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    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. Missow
       
      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. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      Par macro?
      0
    3. Missow
       
      peu importe la méthode j'aimerais juste y arriver :)
      0
    4. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      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. Missow
       
      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
  3. Missow
     
    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
  4. Missow
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    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