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

Résolu/Fermé
Missow - 19 août 2011 à 10:58
eriiic Messages postés 24451 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 29 septembre 2022 - 29 août 2011 à 19:53
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

eriiic Messages postés 24451 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 29 septembre 2022 7 131
Modifié par eriiic le 29/08/2011 à 19:59
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
pijaku Messages postés 12259 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 9 août 2022 2 703
19 août 2011 à 13:52
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
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
pijaku Messages postés 12259 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 9 août 2022 2 703
19 août 2011 à 14:18
Par macro?
0
peu importe la méthode j'aimerais juste y arriver :)
0
pijaku Messages postés 12259 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 9 août 2022 2 703
Modifié par pijaku le 19/08/2011 à 14:48
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
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
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
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

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

Posez votre question
eriiic Messages postés 24451 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 29 septembre 2022 7 131
26 août 2011 à 20:00
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