Microsoft 365 Problème au Niveau de l'icrémentation des formules dans un tableau

Daher Ali

XLDnaute Junior
Bonjour à tous,
J’ai un formulaire de saisi et cela fonctionne très bien, le problème que je vais poser n’a rien avoir avec le formulaire, j’explique :

Mon tableau comporte 6 colonne (4 première colonne remplie par le formulaire et les 2 autre comporte des formules)

Les formules de la colonne 5 et 6 sont :

=SIERREUR(SOMMEPROD(SI.CONDITIONS($B$5:B5="SALAIRE";+$D$5:D5;$B$5:B5="AVANCE";-$D$5:D5;$B$5:B5="SOLDE SALAIRE";-$D$5:D5;$B$5:B5="REMBOURSEMENT";-$D$5:D5;$B$5:B5="CONGE";+$D$5:D5;$B$5:B5="GRATIFICATION";+$D$5:D5;$B$5:B5="PRET";0));"")

=SIERREUR(SOMMEPROD(SI.CONDITIONS($B$5:B5="SALAIRE";0;$B$5:B5="AVANCE";0;$B$5:B5="SOLDE SALAIRE";0;$B$5:B5="REMBOURSEMENT";-$D$5:D5;$B$5:B5="CONGE";0;$B$5:B5="GRATIFICATION";0;$B$5:B5="PRET";+$D$5:D5));"")

A la saisi de la première ligne pas de problème, mais lorsque je saisi la deuxième ligne le tableau prend une nouvelle forme mais les FORMULES NE S’INCREMENTENT PAS COMME IL LE FAUT, c’est-à-dire au moment que le tableau ajoute une nouvelle ligne automatiquement les formules doivent aussi s’incrementer selon la première ligne, mais dans mon cas par exemple au lieu de $B$5:B6 je trouve $B$5:B7

Mais lorsque j’agrandi mon tableau manuellement et j’écris ces formules dans les 2 colonnes et que je tire jusqu’en bas cela met les bonnes formules. Mais avec la sélection de la première ligne si je veux agrandir le tableau que je tire le résultat change, je ne sais pas pourque cette différence.
Joint un exemple du fichier que j'ai ( dans feuille : Sarah et Ali )

Merci d'avance pour votre aide.
 

Pièces jointes

  • Classeur Exemplaire.xlsm
    43.1 KB · Affichages: 21
Solution
RE

La fonction, je l'ai adaptée à partir d'exemples trouvés sur Internet jusqu'à la rendre paramétrable...
  • Pour Personnalisé 1, 2 et 3 : on est obligé de taper dans le barre de formule : cliquer sur fx à gauche de celle-ci et taper les formules
  • pour Personnalisé1 : ici c'est directement Source mais dans certains cas c'est l'étape précédente de la requête qui porte un nom différent
  • pour Personnalisé2 : on tape également dans la barre de formule.
    SALARIE est le groupe sur lequel on veut le cumul des lignes à partir de l'étape précédente Personnalisé1, cumul qui porte sur SALAIRE NET0.
  • pour Personnalisé3 : même logique mais le cumul porte sur PRET0
Je...

Daher Ali

XLDnaute Junior
Merci pour ton retour Chris :)

Bon cela semble fonctionner correctement avec copie de l'onglet donc c bon mais pense à renommer les tableaux sur la copie sinon cela n'aura aucun sens et compliquera la maintenance
Normalement lorsque je duplique une feuille il créer automatiquement un nom au tableau c'est ce que j'ai remarquer

Et ajoute des contrôles car tout n'est pas accepté comme nom d'onglet
Il me parait essentiel d'avoir une liste globale des salariés qui pourrait servir à contrôler l'ajout des onglets. La formule de récupération du nom-prénom du salarié à partir du nom de l'onglet ne me parait pas fiable...
je ne sais pas vraiment le faire ou que je n'est pas compris :(
Pourrais tu m'aidé stp.
Merci
 

chris

XLDnaute Barbatruc
RE
Normalement lorsque je duplique une feuille il créer automatiquement un nom au tableau c'est ce que j'ai remarquer
Oui c'est lui qui choisit et donc très rapidement entre Tsalarie2 et Tsalarie222 il sera impossible de s'y retrouver.
Il est aussi important de bien nommer ses tableaux que de nommer les classeurs et les onglets
Je t'ai donné le code que tu peux adapter
je ne sais pas vraiment le faire ou que je n'est pas compris :(
Par exemple un nom d'onglet ne peut dépasser 31 caractères, ni contenir de / ni de * ? : , [ ]

Il faut donc contrôler avant d'accepter le nom saisi
 

Daher Ali

XLDnaute Junior
Oui c'est lui qui choisit et donc très rapidement entre Tsalarie2 et Tsalarie222 il sera impossible de s'y retrouver.
Il est aussi important de bien nommer ses tableaux que de nommer les classeurs et les onglets
Je t'ai donné le code que tu peux adapter
Super oui c'est génial

Par exemple un nom d'onglet ne peut dépasser 31 caractères, ni contenir de / ni de * ? : , [ ]
Il faut donc contôler avant d'accepter le nom saisi
Donc si je comprend cela aussi est inclus dans le code que tu ma envoyer ??
 

chris

XLDnaute Barbatruc
RE

Il faudra que tu te forme avec des tutoriels...
VB:
Sub ajout_feuille()
Dim Nom As String, i As Byte, Verif As Boolean, MSG As String
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False

Do
    Verif = False
    Nom = InputBox("Définissez le nom de votre nouvelle feuille", "Ajout nouvelle feuille")
    Nom = UCase(Nom)

    If Nom = "" Then Exit Sub
   
    MSG = ""
    For i = 1 To Sheets.Count
        If Sheets(i).Name = Nom Then
            MSG = "la feuille " & Nom & " existe déjà, veuillez choisir un autre nom"
            Verif = True
        End If
    Next
    If Verif = False Then
        If Len(Nom) > 30 Then
            MSG = "Le nom est trop long, veuillez choisir un autre nom"
            Verif = True
        ElseIf InStr(Nom, "/") Or InStr(Nom, "*") Or InStr(Nom, "?") Or InStr(Nom, ":") Or InStr(Nom, "[") Or InStr(Nom, "]") Then
            MSG = "Les caractères / * ? : [ ] sont interdits, veuillez choisir un autre nom"
            Verif = True
        End If
    End If

    If Verif = True Then MsgBox MSG
       
Loop While Verif = True

ThisWorkbook.Worksheets("EXEMPLAIRE").Copy after:=Sheets(Sheets.Count)
ActiveSheet.Name = Nom
ActiveSheet.ListObjects(1).Name = Trim(Replace(Nom, " ", "_"))

Application.ScreenUpdating = True
End Sub

Reste la question de la liste des salariés... la gestion du personnel doit être rigoureuse...
 

Daher Ali

XLDnaute Junior
Reste la question de la liste des salariés... la gestion du personnel doit être rigoureuse...
Dans les 2 derniers fichiers que je tes envoyer celui avec VBA, j'ai une macro dans la Feuil3(SOLDE) qui est alimenter directement lorsque j'ajoute une nouvel feuille le tableau salarier s'incremente automatiquement et lorsque je suprime une feuille le tableau prend une nouvelle forme. Je ne sais pas si c'est de cela que tu veux parler...!
 

chris

XLDnaute Barbatruc
Re
Dans les 2 derniers fichiers que je tes envoyer celui avec VBA, j'ai une macro dans la Feuil3(SOLDE) qui est alimenter directement lorsque j'ajoute une nouvel feuille le tableau salarier s'incremente automatiquement et lorsque je suprime une feuille le tableau prend une nouvelle forme. Je ne sais pas si c'est de cela que tu veux parler...!
Peut-être déformation professionnelle mais, surtout avec une législation RH très stricte, pour moi une table du personnel doit être plus contrôlée et plus pérenne même si j'imagine que vous avez d'autres outils pour gérer.

Que la table dépende des créations, suppressions d'onglets, sachant qu'en plus on n'est pas supposé effacer l'historique, me gêne... mais, comme dit, déformation professionnelle sans doute...
 

Daher Ali

XLDnaute Junior
Peut-être déformation professionnelle mais, surtout avec une législation RH très stricte, pour moi une table du personnel doit être plus contrôlée et plus pérenne même si j'imagine que vous avez d'autres outils pour gérer.

Que la table dépende des créations, suppressions d'onglets, sachant qu'en plus on n'est pas supposé effacer l'historique, me gêne... mais, comme dit, déformation professionnelle sans doute...
Vous êtes vraiment actif vu l'heure j'apprécie beaucoup votre avis et conseils merci beaucoup. Vu ma démarche je crois que vous avez une idée. Pourriez vous me proposer quelques chose de professionnel svp si oui je vous envoie mon fichier source. Je vous remercie Chris
 

chris

XLDnaute Barbatruc
RE

Comme déjà dit
"Je pense que tu devrais réfléchir à une autre option, plutôt qu'un tableau par personne, une table commune et un calcul du solde à l'instant T pour une personne par une requête PowerQuery (intégré à Excel) comme dans un vraie base de données."

Il devrait y avoir
  • une table des salariés crées manuellement (colonnes A à D)
  • une table des mouvements (versements de sommes liées au salaire ou aux prêts, ou même séparer salaire et prêts)
  • un calcul du solde, réalisé par une requête PowerQuery, intégré à Excel,
    soit à la demande pour une personne
    soit pour toutes
Outre ce calcul de solde cela permet facilement d'établir d'autres statistiques, ce qui est difficile avec plein d'onglets différents.
 

Daher Ali

XLDnaute Junior
RE

Exemple ci-joint

Mise à jour
CHAPEAU c'est top R.A.S
Je ne comprenais rien au début :rolleyes: mais après j'ai remarqué que je devais actualiser les données si je veux après chaque saisie ou lorsque je fini toute les saisies. Simple et très efficace.
Je te remercie pour ce travaille Chris et j'aimerais savoir comment apprendre à faire ce travaille.
Mais je n'est toujours pas eu de repose pour ce qui concerne une formation.
 

chris

XLDnaute Barbatruc
Bonjour

Oui j'ai oublié de préciser pour la mise à jour qui peut s'automatiser par une ligne de code

Je ne peux te donner de formation
Tu peux-être en obtenir une par ton entreprise
Sinon il y a des tutoriels sur internet, des livres également...
Et les forums pour répondre quand tu coinces sur une explication ou un exo

Ce qui est important avant de chercher à automatiser Excel c'est de bien le connaître
On n'automatise ben que ce qu'on connait bien
Trop de développeurs réinvente l'eau tiède, ne sachant pas que ce qu'ils codent existe déjà...
A de très rares exceptions, VBA ne peut rien faire d'autre qu'automatiser ce qui existe déjà.
Il doit servir à mettre de l'huile dans les rouages.

De plus aujourd'hui, avec les tableaux structurés, la puissance accrue des TCD, les possibilités offertes par PowerQuery, nombre des solutions autrefois faites par VBA se font autrement.

Et il est important, aussi comme dans tout projet, de bien analyser, bien tout mettre à plat avant de commencer. Si on a l'impression de perdre du temps au départ, on en gagnera tellement ensuite avec des rouages bien agencés et bien huilés.
 

Discussions similaires

Statistiques des forums

Discussions
312 213
Messages
2 086 305
Membres
103 174
dernier inscrit
OBUTT