recherche dans plsueirs feuilles et indique soit nom feuille ou case a1

laurent59

XLDnaute Nouveau
Bonjour à tous.
Voila je vous explique :
J ai un classeur avec une premiere feuille dans laquelle se trouve en colonne A une liste de noms
Ensuite mon classeur comporte toutes les semaines de l'annee donc feuille2 se nomme sem2 feuille3 sem3 etc ..
JE cherche une macro qui m'indique sur la 1ere feuille en celulle E1 E2 E3 (à coté de la liste de noms en fait ) que si le nom est trouvé dans les feuilles 2 à 17 (sem2 à sem17 pour le 1er timestre) la macro mentionne soit le nom de la feuille ou la valeur de la celulle A1.
Cordialement
 

laurent59

XLDnaute Nouveau
Re : recherche dans plsueirs feuilles et indique soit nom feuille ou case a1

PierreJean merci mais apparemment ce n'est pas ce que je recherche.
J'ai joint mon fichier avec le message pour que vous voyez un peu.
Merci
 

Pièces jointes

  • Suivi Tir Cyr.zip
    53.2 KB · Affichages: 37

job75

XLDnaute Barbatruc
Re : recherche dans plsueirs feuilles et indique soit nom feuille ou case a1

Bonjour laurent59, bienvenue sur XLD,

(sem2 à sem17 pour le 1er timestre)

Il y a 90 ou 91 jours au 1er trimestre, difficile d'en tirer 17 (ou 16) semaines :confused:

Un fichier (allégé et/ou zippé) avec les résultats à obtenir permettrait d'y voir plus clair.

Edit : pas rafraîchi, il y a du monde, salut à tous

A+
 

pierrejean

XLDnaute Barbatruc
Re : recherche dans plsueirs feuilles et indique soit nom feuille ou case a1

Re

Ton fichier avec ma macro adaptée

Si ce n'est pas ce que tu souhaites ,expose ton problème en detail
 

Pièces jointes

  • Suivi Tir Cyr(2).zip
    54.5 KB · Affichages: 56
  • Suivi Tir Cyr(2).zip
    54.5 KB · Affichages: 51
  • Suivi Tir Cyr(2).zip
    54.5 KB · Affichages: 50

job75

XLDnaute Barbatruc
Re : recherche dans plsueirs feuilles et indique soit nom feuille ou case a1

Re, un salut particulier à pierrejean,

Avec une seule fonction qui :

- soit calcule le nombre d'occurrences du nom

- soit donne le nom de la 1ère feuille où le nom est trouvé.

Le 3ème argument est facultatif, c'est lui qui détermine l'option :

Code:
Public Function OCCUP(Nom As String, sem As String, Optional feuil As Boolean)
Dim s1 As Byte, s2 As Byte, i As Byte
s1 = Split(sem)(1): s2 = Split(sem)(3)
For i = s1 To s2
  OCCUP = OCCUP + Application.CountIf(Sheets(i + 1).UsedRange, Nom)
  If feuil And OCCUP = 1 Then
    OCCUP = Sheets(i + 1).Name '1ère feuille où le nom est trouvé
    Exit Function
  End If
Next
End Function
Voir l'utilisation en colonnes D et E du fichier joint.

A+
 

Pièces jointes

  • Suivi Tir Cyr(1).zip
    57.4 KB · Affichages: 27
Dernière édition:

laurent59

XLDnaute Nouveau
Re : recherche dans plsueirs feuilles et indique soit nom feuille ou case a1

Pierrejean merci c'est ce que je veux.
Mais je voudrais que dans la colonne E il recherche le nom dans les feuilles 2 à 17 dans la colonne G il recherche le nom dans les feuilles 18 à 35 et dans la colonne I il recherche le nom dans les feuilles 36 à 51.
L'utilisation d'une fonction peut etre ? comme j'ai pu faire pour les colonnes D F H dans mon fichier.

Merci
 

job75

XLDnaute Barbatruc
Re : recherche dans plsueirs feuilles et indique soit nom feuille ou case a1

Re,

Mon post #7 compterait pour des prunes Laurent ??

Ma fonction est bien utilisée dans les colonnes E G I non ???

Mais je récidive avec cette version (2) qui liste dans la cellule toutes les feuilles où le nom est trouvé (et non plus seulement la 1ère) :

Code:
Public Function OCCUP(Nom As String, sem As String, Optional feuil As Boolean)
Dim s1 As Byte, s2 As Byte, i As Byte, n As Long, affiche As String
s1 = Split(sem)(1): s2 = Split(sem)(3)
For i = s1 To s2
  n = Application.CountIf(Sheets(i + 1).UsedRange, Nom)
  OCCUP = OCCUP + n
  If n Then affiche = affiche & " #" & Sheets(i + 1).Name
Next
If feuil Then OCCUP = affiche 'si 3ème argument = VRAI
End Function
A+
 

Pièces jointes

  • Suivi Tir Cyr(2).zip
    57.5 KB · Affichages: 25
  • Suivi Tir Cyr(2).zip
    57.5 KB · Affichages: 24
  • Suivi Tir Cyr(2).zip
    57.5 KB · Affichages: 21

laurent59

XLDnaute Nouveau
Re : recherche dans plsueirs feuilles et indique soit nom feuille ou case a1

Désolé Job75, ton post7 a du venir pendant que je repondais a Pierre jean.
Ta soluce est impek job75 par contre je n'arrive pas à trouver la fonction dans le fichier.
Est il possible de faire comme pierrejean de me donner le nom de la feuille ainsi que la celulle dans laquelle se trouve le nom ?

Merci encore
 

laurent59

XLDnaute Nouveau
Re : recherche dans plsueirs feuilles et indique soit nom feuille ou case a1

Job75, c bon j'ai trouvé la fonction.
Petit truc, j'ai rajouté sur le fichier un bouton qui fait une mise à jour automatique de la macro.
Seul truc quand je rajoute des noms dans les differentes feuilles cela ne prend pas en compte.
Il faut absolumment que je remarque la fonction occup dans la celulle D pour qu'il comptabilise et qu'il mentionne le nom de la feuille.
Une petite astuce pour resoudre cela ??
 

job75

XLDnaute Barbatruc
Re : recherche dans plsueirs feuilles et indique soit nom feuille ou case a1

Re,

Vous ne nous donnez pas votre solution, alors voici la mienne, version (3) :

Code:
Public Function OCCUP(nom As String, sem As String, Optional cellule As Boolean)
Dim s1 As Byte, s2 As Byte, i As Byte, F$, ref As Range, ad$, affiche$
s1 = Split(sem)(1): s2 = Split(sem)(3)
For i = s1 To s2
  F = Sheets(i + 1).Name
  Set ref = Sheets(i + 1).[IV65536]
  ad = ""
1 Set ref = Sheets(i + 1).Cells.Find(nom, After:=ref, LookIn:=xlValues, LookAt:=xlWhole)
  If Not ref Is Nothing Then
    If ref.Address <> ad Then
      If ad = "" Then ad = ref.Address
      OCCUP = OCCUP + 1
      affiche = affiche & " #" & F & "!" & ref.Address(0, 0)
      GoTo 1
    End If
  End If
Next
If cellule Then OCCUP = affiche 'si 3ème argument = VRAI
End Function

La fonction n'est pas volatile (et c'est tant mieux) donc elle ne se recalcule pas si l'on modifie les autres feuilles.

J'ai donc ajouté le bouton Mise à jour.

La macro du bouton est dans le code de la feuille "Liste" (clic droit sur l'onglet et Visualiser le code) :

Code:
Private Sub CommandButton1_Click() 'Mise à jour
Dim tablo
Application.ScreenUpdating = False
tablo = [D1:H1]
[D1:H1].ClearContents
[D1:H1] = tablo
End Sub
Pour le fun, voyez la version (4) où j'ai rendu la fonction volatile, vous verrez qu'il est pénible de modifier une cellule quelconque dans le fichier :)

A+
 

Pièces jointes

  • Suivi Tir Cyr(4) Volatile.zip
    62.9 KB · Affichages: 26
  • Suivi Tir Cyr(3).zip
    62.9 KB · Affichages: 27

job75

XLDnaute Barbatruc
Re : recherche dans plsueirs feuilles et indique soit nom feuille ou case a1

Re,

Bof, il y a plus simple pour la macro du bouton Mise à jour :

Code:
Private Sub CommandButton1_Click() 'Mise à jour
[D1:H1] = [D1:H1].Value
End Sub
Je pensais qu'il fallait réellement modifier l'argument pour que les fonctions se recalculent...

A+
 

laurent59

XLDnaute Nouveau
Re : recherche dans plsueirs feuilles et indique soit nom feuille ou case a1

Merci job75 tu es genial !!!
Dernier petit truc n est il pas possible de recuperer le jour ou le nom apparait dans les feuilles ?? par ex x est present le 17 juin
De la meme maniere dans la colonne E les feuilles 2 à 17 dans la colonne G il recherche le nom dans les feuilles 18 à 35 et dans la colonne I il recherche le nom dans les feuilles 36 à 51.
Merci bcp en tout cas
 

job75

XLDnaute Barbatruc
Re : recherche dans plsueirs feuilles et indique soit nom feuille ou case a1

Re,

Insatiable ce cher Laurent :D

Voici la version (5) avec la date qui suit l'adresse de la cellule.

Il suffit de modifier le calcul de affiche :

Code:
affiche = affiche & " #" & F & "!" & ref.Address(0, 0) & "-" _
  & Format(ref.Offset(1 - ref.Row, 1 - (ref.Column Mod 3)), "dd/mm/yy")
A+
 

Pièces jointes

  • Suivi Tir Cyr(5).zip
    63.4 KB · Affichages: 39

Discussions similaires

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 389
Messages
2 087 933
Membres
103 678
dernier inscrit
bibitm