VBA : Compter 1 occurence dans une plage dynamique

cibleo

XLDnaute Impliqué
Bonsoir le forum,

Pour bien comprendre, j'illustre avec le fichier joint (JP14)

Feuille "Synthese", clic sur Bouton 4, j'ai fait une recherche avec le mot "scanner" sur les feuilles de Janvier.

S'affichent alors toutes les lignes contenant ce mot.

En bout de colonne B s'affiche dynamiquement la mention "TOTAL", puis le nombre de fois où apparait le mot.

Dans la procédure ci-dessous, j'ai donc placé une instruction (en rouge) qui est l'équivalent de =NBVAL($C$2:$M$12)

Mais le résultat renvoyé est égal à 13 soit le nbre de cellules non vides.

Or le mot "scanner" apparait ici 15 fois sur un total de 13 cellules. (puisqu'un même mot peut figurer plusieurs fois dans une cellule).

Code:
Private Sub remplirsynthese2(£nomfeuille As Variant, VSearch As String)
Dim plage As Range, Cel As Range, Adrdeb As String
Dim lig As Long
 
With Sheets(£nomfeuille)
    'Ici Plage de recherche par mots (TextBox1)
    Set plage = .Range("B3:L" & .Range("a65536").End(xlUp).Row)
    With plage
.../...
[COLOR=darkred]ShtR.Cells(DerLiR + 2, 2).Value = "TOTAL"[/COLOR]
.../...
[COLOR=darkred]ShtR.Cells(DerLiR + 3, 2).FormulaR1C1 = "=COUNTA(R2C" & 3 & ":R" & DerLiR & "C" & 13 & ")"[/COLOR]
.../...

Comment puis-je parvenir à compter l'occurence saisie initialement dans la Textbox de mon formulaire figurant dans la plage dynamique de la feuille "Synthese" ?

Dois-je créer une fonction personnalisée ou m'inspirer de la solution de Boisgontier dans le fil ci-dessous ?

https://www.excel-downloads.com/threads/recherche-doccurence-sans-reference.95348/

Pouvez-vous m'aider à résoudre ce problème.

Merci Cibleo
 

Pièces jointes

  • VersionFinalePlanning6.xls
    159.5 KB · Affichages: 161
  • VersionFinalePlanning6.xls
    159.5 KB · Affichages: 161
  • VersionFinalePlanning6.xls
    159.5 KB · Affichages: 177

pierrejean

XLDnaute Barbatruc
Re : VBA : Compter 1 occurence dans une plage dynamique

Re
dans Private Sub remplirsynthese2(£nomfeuille As Variant, Vsearch As String)
remplacer
Code:
 Set Plage = .Range("B[COLOR=blue]3[/COLOR]:L" & .Range("a65536").End(xlUp).Row)

par

Code:
  Set Plage = .Range("B[COLOR=blue]4[/COLOR]:L" & .Range("a65536").End(xlUp).Row)

et tester
cela resoud le probleme des lignes intercalées mais je sais pas si cela n'en amene pas un autre
 

Discussions similaires

Statistiques des forums

Discussions
312 273
Messages
2 086 701
Membres
103 373
dernier inscrit
Edouard007