Somme erronée cellules fusionnées ou non
Résolu/FerméT3chN0g3n Messages postés 5097 Date d'inscription samedi 16 février 2019 Statut Membre Dernière intervention 21 novembre 2024 - 3 oct. 2022 à 19:45
- Somme erronée cellules fusionnées ou non
- Comment faire la somme de plusieurs cellules non consécutives sur excel - Guide
- Somme si couleur - Guide
- Verrouiller cellules excel - Guide
- Excel somme ne fonctionne pas ✓ - Forum Excel
- Pour ce faire la taille des cellules fusionnées doit être identique ✓ - Forum Excel
7 réponses
30 sept. 2022 à 12:34
Bonjour
Une idée dans le fichier
LIEkEpqiudg_Formule-incorrecte-PhC1.xlsx (cjoint.com)
3 oct. 2022 à 16:34
Bonjour,
Oui j'ai enfin compris que vous travaillez avec des valeurs référence (TEST, Toto) et dans la macro il y a un manque de boucle, je vais regarder pour la correction.
3 oct. 2022 à 16:58
Merci !
Modifié le 3 oct. 2022 à 17:01
Bonjour,
Essayer cette version:
Function SOMMEAUTO(ByRef celldebut As Range, ByRef CellFin As Range, Recherche As String)
Total = 0
For Index = celldebut.Row To CellFin.Row
If Cells(Index, celldebut.Column).Value Like "*" & Recherche & "*" Then
If Cells(Index, celldebut.Column).MergeCells = True Then
Total = Total + 1
Else
Total = Total + 0.5
If Cells(Index, celldebut.Column + 1).Value Like "*" & Recherche & "*" Then
Total = Total + 0.5
End If
End If
ElseIf Cells(Index, celldebut.Column + 1).Value Like "*" & Recherche & "*" Then
Total = Total + 0.5
End If
Next Index
SOMMEAUTO = Total
End Function
Modifié le 3 oct. 2022 à 17:17
.../
Merci pour cette correction qui prend l'après-midi en compte.
J'ai toujours l'autre problème quand à la validation des formules qu'il faut de nouveau valider une par une quand on modifie une activité sur le planning.
Peux-tu m'aider stp? A part :
Données / Convertir + Terminer (un peu lourd à faire lors de chaque modif), je ne vois pas...
ou
re valider chaque formule...
Modifié le 3 oct. 2022 à 18:21
Bonjour,
Note:
Contrairement aux fonctions de base d'excel, les fonctions personnalisées ne se mettent pas à jour automatiquement quand on change la valeur de tout ou partie des arguments . Il faut sélectionner la cellule qui la contient, cliquer sur la formule puis valider pour que la mise à jour du résultat se fasse
Merci de me dire comment vous entrez les valeurs d'activité?
Salutations.
Le Pingou
3 oct. 2022 à 18:11
.../
Soit par une saisie, soit sélection dans un choix menu déroulant..
Cdlt
3 oct. 2022 à 18:26
Bonjour,
Je vous propose d'insérer cette ligne d'instruction [ Application.Volatile ] comme suit :
Function SOMMEAUTO(ByRef celldebut As Range, ByRef CellFin As Range, Recherche As String)
Application.Volatile
Total = 0
Salutations.
Le Pingou
Modifié le 3 oct. 2022 à 18:48
Un grand merci ! Je testerais cela demain matin ...
30 sept. 2022 à 11:27
Bonjour,
Dans ton exemple, en M10:M15 tu as bien 6 cellules comprenant "TEST" et 0 en N10:N15 ????
Cordialement
Modifié le 30 sept. 2022 à 11:49
Bonjour,
Oui, mais je cherche à calculer le nombre de jours/agent (précision oubliée)
Cela fait 5 jours et non 6
M et N fusionnée = 1
M seule = 0.50
N seule = 0.50
Ce qui fait 5
Bien cordialement,
30 sept. 2022 à 12:02
Salut,
Avec t'a formule, ça additionne tous les "TEST" en colonne M (donc 6) et la deuxième partie de la formule donne zéro car la colonne N est vide. Si tu place les TEST en ligne 11 et 14 sur le soir tu obtiens bien 5.
Au plus simple tu peut supprimer les cellules fusionnées (et si une personne fait toute la journée le mettre dans les deux cellules) et diviser par deux la somme de M et de N.
30 sept. 2022 à 12:10
Re,
Vu que tes cellules ne sont pas contiguës, il faut développer la formule :
=NB.SI(M10;"*TEST*")+NB.SI(M12;"*TEST*")+NB.SI(M13;"*TEST*")+NB.SI(M15;"*TEST*")+(NB.SI(M11;"*TEST*")+NB.SI(M14;"*TEST*"))/2+(NB.SI(N10:N15;"*TEST*"))/2
Il y a peut-être plus court.
PS : les cellules fusionnées sont généralement une plaie dans Excel
Cordialement
30 sept. 2022 à 12:26
Je regarde pour te faire ça en vba après manger =D
30 sept. 2022 à 12:26
Alors si tu peux différencier :
=NB.SI(M10:N15;"*TEST 1*")+NB.SI(M10:N15;"*TEST 0,5*")/2
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionModifié le 30 sept. 2022 à 13:11
J'ai trouvé cela sur le net (veux post)
Une fonction qui permet de trouver le nombre de cellules fusionnées....
'Option Explicit
Function rechFusion(chaine As String, plage As Range) As Long
' recherche une chaine dans une plage
' et retourne le nombre de cellules fusionnées contenant cette chaine
'
'
' Ex syntaxe sur feuille :
' =rechFusion(J3;$m$3:$n$16)
'
Dim data As Variant, lig As Long, col As Long
Application.Volatile
If plage.Count = 1 Then Exit Function
data = plage.Value
For lig = 1 To UBound(data, 1)
For col = 1 To UBound(data, 2)
If data(lig, col) = chaine Then
rechFusion = rechFusion + plage.Cells(lig, col).MergeArea.Cells.Count
col = col + plage.Cells(lig, col).MergeArea.Cells.Columns.Count - 1
End If
Next col
Next lig
End Function
Je cherche pour utiliser cette fonction et rajouter la recherche de l'activité en vba.
Dans mon exemple, l'idée serait : si "TEST" trouvé 6 fois - (2 cellules non fusionnées /2)
Modifié le 30 sept. 2022 à 15:52
Voilà une proposition:
https://www.cjoint.com/c/LIEnPXigAcX
EDIT: Ajouter
Option Compare Text
Au dessus de la fonction dans le VBA pour que ce ne soit pas sensible à la casse
30 sept. 2022 à 16:14
Merci T3chN0g3n, pour cette fonction qui répond parfaitement à mon problème !
Cdlt
30 sept. 2022 à 16:27
Ravis que ça puisse convenir =)
Modifié le 30 sept. 2022 à 16:36
Pour la postérité ...
Option Compare Text 'Recherche une chaine de caractères dans chaque cellule d'une plage donnée, sur deux colonnes, et retourne un compte total en additionnant 0.5 par cellule individuelle et 1 pour deux cellules fusionnées Function SOMMEAUTO(ByRef celldebut As Range, ByRef CellFin As Range, Recherche As String) Total = 0 For Index = celldebut.Row To CellFin.Row If Cells(Index, celldebut.Column).Value Like "*" & Recherche & "*" Then If Cells(Index, celldebut.Column).MergeCells = True Then Total = Total + 1 Else Total = Total + 0.5 If Cells(Index, celldebut.Column + 1).Value Like "*" & Recherche & "*" Then Total = Total + 0.5 End If End If End If Next Index SOMMEAUTO = Total End Function
3 oct. 2022 à 11:01
Bonjour,
Si je modifie les informations dans mon planning, la fonction ne recalcule pas le total.Pour cela, il faut que je valide de nouveau la formule. Avez-vous une solution svp ?
(Le calcul est bien automatique)
Merci d'avance
3 oct. 2022 à 15:57
Bonjour,
Juste au passage, comment vous faites pour calculer sur des cellules qui ont du texte...?
Modifié le 3 oct. 2022 à 16:08
Avec la fonction personnalisée en vba de T3chN0g3n
3 oct. 2022 à 19:35
Bonjour,
Effectivement je sais pas qui a codé ça c'est ni fait ni à faire ...
Je regarde !
Modifié le 3 oct. 2022 à 20:06
Voilà le code corrigé:
Option Compare Text Function SOMMEAUTO(ByRef celldebut As Range, ByRef CellFin As Range, Recherche As String) Application.Volatile Total = 0 For Index = celldebut.Row To CellFin.Row If Cells(Index, celldebut.Column).MergeCells = True Then If Cells(Index, celldebut.Column).Value Like "*" & Recherche & "*" Then Total = Total + 1 End If Else If Cells(Index, celldebut.Column).Value Like "*" & Recherche & "*" Then Total = Total + 0.5 End If If Cells(Index, celldebut.Column + 1).Value Like "*" & Recherche & "*" Then Total = Total + 0.5 End If End If Next Index SOMMEAUTO = Total End Function
Modifié le 30 sept. 2022 à 12:49
Bonjour,
Merci pour la méthode, mais les intitulés d'activité ne sont plus les mêmes..
Les cellules ne sont plus fusionnées
Cdlt
30 sept. 2022 à 12:50
C'est une idée à vous de l'adapter à votre besoin
30 sept. 2022 à 13:04
Les cellules fusionnées à éviter! Utilisez plus tôt le format centrer sur plusieurs cellules