Recherche sur une plage de données

  • Initiateur de la discussion Initiateur de la discussion Chubby
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Chubby

XLDnaute Impliqué
Bonsoir,

J'ai un peu erré dans les divers fils, en vain.
J'ai sur une feuille un plan d'une "vinothèque". J'ai identifié les casiers qui contiennent les bouteilles. Je voudrais, à patir de l'identification de ces casiers retrouver les détails et les faire figurer dans une liste. Elle me servira ensuite pour les étiquettes de casiers et la "gestion" des échantillons.
Je vous joins un bout du fichier. Merci de me donner une piste. Le "décaler" me semblait être le fil à suivre mais pas acquit.
Merci encore de vos lumières.
 

Pièces jointes

Re : Recherche sur une plage de données

Bonsoir David,
Merci de ton intérêt à mon problème. C'est vrai que ma présentation est un peu olé-olé. Le plan est la représentation physique des étagères. L'avantage est qu'il peut servir à tout le monde pour faire un inventaire rapidement sans trop chercher les références.
Je vois que l'exposé de mon problème n'est pas très explicite. En fait ma problématique est d'établir la liste à partir du plan et non l'inverse.
Sinon, comment vois tu les choses lorsque tu me dis que je ne me simplifie pas les choses (c'est bien ce qui me caractérise je crois, sniffff).
Merci encore à toi et à tous ceux qui sont tentés.
Bonne soirée
 
Re : Recherche sur une plage de données

Bonjour, salut david,

Je partage entièrement l'avis de notre ami david, avec des cellules fusionnées c'est peine perdue, beaucoup trop de problèmes en perspective, d'autant plus que cela semble tout à fait inutile, vois une autre proposition de présentation en W2:X26 qui se rapproche plus de la tienne.
 

Pièces jointes

Re : Recherche sur une plage de données

Bonjour Hoerwind, David et les zotres,

Tu as tout à fait raison pour ce qui est de la présentation. Je me suis laissé embarqué en fusionnant les cellules alors que rien ne le nécessite comme tu le montres dans ta proposition.
La fonction "décaler" devrait pouvoir résoudre partiellement mon problème, ou suis-je sur une mauvaise piste?
Je regarde à nouveau ce soir.
Bonne journée à vous
 
Re : Recherche sur une plage de données

Bonjour Chubby, david84, hoerwind

Voici une solution VBA avec ces macros dans Module1 :

Code:
Sub Liste()
Dim lig&, cel As Range, Ident$, Prop As Range, Etiq$, Nom$
Application.ScreenUpdating = False
lig = 2
With Sheets("Liste")
  .[A2:D65536].ClearContents
  For Each cel In ActiveSheet.UsedRange
    If InStr(cel, ".") Then
      Ident = NUM(cel)
      If Ident <> "" And Ident <> cel Then
        Set Prop = Cells.Find(Ident, LookIn:=xlValues, LookAt:=xlWhole)
        If Not Prop Is Nothing Then
          Set Prop = Prop.Offset(, 1)
          Etiq = cel.Offset(-3)
          If Prop <> "" And Etiq <> "" Then
            Nom = cel.Offset(-2)
            If cel.Offset(-2, 3) = "" Then
              Ident = cel
            Else
              Ident = cel & "a"
              .Cells(lig, 1) = Ident
              .Cells(lig, 2) = Prop
              .Cells(lig, 3) = Etiq
              .Cells(lig, 4) = Nom
              lig = lig + 1
              Ident = cel & "b"
              Nom = cel.Offset(-2, 3)
            End If
            .Cells(lig, 1) = Ident
            .Cells(lig, 2) = Prop
            .Cells(lig, 3) = Etiq
            .Cells(lig, 4) = Nom
            lig = lig + 1
          End If
        End If
      End If
    End If
  Next
  'tri sur 3 colonnes
  .[A:D].Sort .[A1], xlAscending, .[B1], , xlAscending, .[C1], xlAscending, xlYes
  .Activate
End With
End Sub

Function NUM$(t)
'renvoie les chiffres et le point
Dim i%
For i = 1 To Len(t)
  If Not IsNumeric(Mid(t, i, 1)) And Mid(t, i, 1) <> "." Then Exit For
Next
If i > 1 Then NUM = Left(t, i - 1)
End Function
Ci-joint le fichier enregistré en .xls et .xlsm.

Nota : les cellules fusionnées ne posent aucun problème.

A+
 

Pièces jointes

Dernière édition:
Re : Recherche sur une plage de données

Re,

Petit complément en feuille Liste.

Les bordures s'affichent par MFC et la colonne Propriété est en "nom propre".

Fichier (2).

Edit : j'ai aussi modifié pour que la macro puisse être appelée depuis n'importe quelle feuille.

Et à la fin il suffit de trier sur une seule colonne...

A+
 

Pièces jointes

Dernière édition:
Re : Recherche sur une plage de données

Bonsoir Job, Hoerwind, David et les zotres,
Wouahhh voilà qui est efficace ... super boulot Job! elle est facile celle là, je sais.
Je vois que les grands noms se penchent sur mon petit cas et je vous en remercie tous. Job, c'est un peu indécent ton truc, ça marche tellement bien. En revanche je n'arrive je me heurte à quelques graviers:
1- macro, elle est super efficace mais je n'y capte pas grand chose encore
2- au taf je bosse sur un mac, c'est à dire un truc peu enclin aux macro des pc ... ça ne tourne pas tout simplement. C'est vrai que dans ma présentation j'ai noté excel 2010 sans dire mac.
3- un truc qui rejoint le 1: j'ai voulu continuer le plan avec quelques autres casiers ... rien de neuf n'apparait sur la liste et je n'arrive pas à voir sous VB comment étendre la sélection...
En bref, Job si tu pouvais m'éclairer un peu sur ta démarche ou je me résigne pour plus d'indépendance et d'honnéteté, à plancher sur des formules de recherche.
De toute façon un grand merci à vous tous pour ce partage de savoir.
Chube
 
Re : Recherche sur une plage de données

Re,

La fonction NUM pour la récupération des chiffres séparés par un point ne me plaisait pas trop.

En fait il n'y a que les lettres D et E qui posent problème car elles donnent des nombres au format scientifique.

Alors je les remplace par # pour la recherche :

Code:
Ident = Replace(Val(Replace(Replace(UCase(cel), "D", "#"), "E", "#")), ",", ".")
Fichier (3), où j'ai aussi supprimé l'espace devant Matorit.

A+
 

Pièces jointes

Dernière édition:
Re : Recherche sur une plage de données

Re Chubby,

Nos posts se sont croisés.

L'adjonction d'un nouveau casier ne doit pas poser de problème.

La macro le repère par son identification en bas à gauche, du type 1.2X3, 1-2-3 étant des nombres quelconques pouvant comporter plusieurs chiffres.

Elle recherche par la méthode Find la cellule contenant le nombre 1.2.

S'il y a bien la Propriété et l'Etiquette, le casier est répertorié dans la liste.

A+
 
Re : Recherche sur une plage de données

Re Job,
Merci pour ton travail. Effectivement dans la mesure où on rajoute la Propriété et l'étiquette, le nouveau casier apparait dans la liste.
Cependant, dans la mesure où je vais me retrouver avec plusieurs propriétés sur le même carré (exple 1.4) où je peux imaginer 1.4A1 pour Favre et 1.4B2 et plus pour Fèbre. Comment dois-je alors l'intégrer dans le plan pour que ta macro le prenne en compte? A moins de retourner le problème ... arf
Merci à toi
 
Re : Recherche sur une plage de données

Re,

Je ne vois pas comment on peut avoir plusieurs propriétés sur le même carré.

Noter qu'avec le carré "1.4" on n'affichera rien car il y a un espace après le 1.4 dans la 1ère cellule...

A+
 
Re : Recherche sur une plage de données

Bonjour Chubby, le forum,

La recherche de Propriété par la méthode Find n'est pas la plus rapide.

Le fichier (4) joint recherche par Application.HLookup dans le tableau tablo.

J'ai mesuré la durée d'exécution :

- fichier (3) sur Excel 2003 : 0,13 s - sur Excel 2010 : 0,18 s

- fichier (4) sur Excel 2003 : 0,08 s - sur Excel 2010 : 0,06 s

A+
 

Pièces jointes

Re : Recherche sur une plage de données

Bonsoir Job, les zotres,

Pas mal cher Job, je dirais même très beau travail.
Je comprends que tu t'étonnes de ma question. Elle n'était pas dans les données initiales effectivement. J'ai donné un cas d'exemple simple avec un carré par propriété. Mais il se peut que le carré 1.2 par exemple comprenne plusieurs propriétés.
Peut être que je devrais repenser à l'organisation même du plan ou même de la liste avec une recherchev des données que j'ai par ailleurs.
Je regarde ça à tête reposée.
Quoi qu'il en soit merci encore à toi pour cette belle mécanique.
 
Re : Recherche sur une plage de données

Bonjour Chubby, le forum,

Je ne vois toujours pas où serait la logique de votre fichier si pour un même carré il y avait plusieurs cellules telles que W2 ou W31.

A priori pour un carré il faut une seule cellule avec le numéro de base.

Pour terminer encore une remarque.

Si l'on efface la cellule W2 (1.1) la macro beugue sur Prop = Application.HLookup(Ident, tablo, 2, 0)

Pour l'éviter, il faut définir tablo dès le début par ReDim tablo(1, 0)

Fichier (5).

A+
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

C
  • Question Question
Réponses
2
Affichages
908
Claudine chavassieux
C
M
Réponses
3
Affichages
951
M
Retour