Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Aide macro recherche groupé

  • Initiateur de la discussion Initiateur de la discussion starz
  • 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 !

starz

XLDnaute Occasionnel
Bonjour,
Pouvez vous m'aider à résoudre mon problème de macro.
Sur un ancien document j'utilisait cette macro mais elle fonctionnait sur plusieurs feuille, maintenant j'en utilise qu' une seule.

Je souhaite faire une recherche selon un critère "oui" dans ma plage de cellule
(A : D), si dans la colonne D il y a une cellule = oui alors je met le résultat dans ma plage (F:H)

un exemple en pièce jointe pret à recevoir votre aide

merci



ma macro

Code:
Option Explicit
Option Compare Text
Sub test()
On Error Resume Next
Dim Ws As Worksheet, x As Variant, i As Integer, j As Integer, k As Integer, T As Variant, T1() As String, n As Variant
n = ActiveSheet.Name
Application.ScreenUpdating = False
 Columns("e:f").ClearContents
For Each Ws In Worksheets
If Ws.Name <> "Feuil1" Then
Worksheets(Ws.Name).Activate
T = Range("A3:c" & Range("b65536").End(xlUp).Row)
x = 1
For i = 1 To UBound(T)
For j = 2 To 2
If T(i, j) = "oui" Then
ReDim Preserve T1(1 To 2, 1 To x)
For k = 1 To 2
T1(k, x) = T(i, k)
Next k: x = x + 1: End If: Next j: Next i
Sheets("Feuil1").Range("a65536").End(xlUp).Offset(1, 0).Resize(UBound(T1, 2)) = [b3]
Sheets("Feuil1").Range("b65536").End(xlUp).Offset(1, 0).Resize(UBound(T1, 2), UBound(T1, 1)) = Application.Transpose(T1)
Erase T, T1: End If: Next Ws: Sheets(n).Activate
End Sub
 

Pièces jointes

Dernière édition:
Re : Aide macro recherche groupé

Salut starz
Bonjour le Fil
Bonjour le Forum

Voila ce que j'ai mis en fonction de ce que j'ai cru comprendre
Code:
Option Explicit
Option Compare Text
Sub test()
On Error Resume Next
Dim x As Long, i As Integer, j As Integer, k As Integer, T As Variant, T1() As String, n As String
n = ActiveSheet.Name
Application.ScreenUpdating = False
 Columns("e:G").ClearContents
With Worksheets("Feuil1")
      .Activate
      .Range("F5:H" & .Range("F65536").End(xlUp).Row + 1).ClearContents 'on efface la plage
T = .Range("A2:D" & .Range("A65536").End(xlUp).Row) 'on récupére le tableau
x = -1
For i = 1 To UBound(T) 'pour chaque ligne du tableau

If T(i, 3) = "oui" Then 'si "oui" en colonne 3
x = x + 1 'on ajoute 1 pour obtenir 0,1,2 etc
ReDim Preserve T1(3, x) 'on redimmensionne le tableau 3 lignes , x colonnes

T1(0, x) = T(i, 1) 'ici on recupere le MODULE
T1(1, x) = T(i, 2) 'ici la TABLE
T1(2, x) = T(i, 4) 'ici le NOM

End If
Next i
      'ici on va coller le tableau en l'inversant
.Range("F65536").End(xlUp).Offset(1, 0).Resize(UBound(T1, 2), UBound(T1, 1)) = Application.Transpose(T1)
End With
Erase T, T1
End Sub
bonne journée
 
Re : Aide macro recherche groupé

merci le fonctionnement est bon !

par contre dans mon vrai fichier et non mon exemple (méa culpa) les données dans les colonnes BLOQUANT et nom/prénom viennent d'une autre feuille sous la forme
Code:
=SI(Structure!Q4="";"";Structure!Q4)

du coup quand je valide ma macro mon tableau ne se remplit pas ??

que faire ?
 
Re : Aide macro recherche groupé

Re

Je ne comprends pas Lol

Chez moi , même si la valeur est issue d'une formule , ça fonctionne
joins quelque lignes de ton fichier (sans données confidentielles) avec les deux feuilles on verra
Bonne fin de Journée
 
Re : Aide macro recherche groupé

re
effectivement
j'avais oublié de mettre un +1 Lol
voila la macro qui fonctionne même si une seule occurrence ="oui"
Code:
Sub test()
On Error Resume Next
Dim x As Long, i As Integer, j As Integer, k As Integer, T As Variant, T1() As String, n As String
n = ActiveSheet.Name
Application.ScreenUpdating = False
Columns("e:G").ClearContents
With Worksheets("Feuil1")
.Activate .Range("F5:H" & .Range("F65536").End(xlUp).Row + 1).ClearContents 'on efface la plage
T = .Range("A2:D" & .Range("A65536").End(xlUp).Row) 'on récupére le tableau
x = -1
For i = 1 To UBound(T) 'pour chaque ligne du tableau
If T(i, 3) = "oui" Then 'si "oui" en colonne 3
x = x + 1 'on ajoute 1 pour obtenir 0,1,2 etc

ReDim Preserve T1(3, x) 'on redimmensionne le tableau 3 lignes , x colonnes
T1(0, x) = T(i, 1) 'ici on recupere le MODULE
T1(1, x) = T(i, 2) 'ici la TABLE
T1(2, x) = T(i, 4) 'ici le NOM
End If
Next i 'ici on va coller le tableau en l'inversant
.Range("F65536").End(xlUp).Offset(1, 0).Resize(UBound(T1, 2) [COLOR=Red]+ 1[/COLOR], UBound(T1, 1)) = Application.Transpose(T1)
End With
Erase T, T1
End Sub
excuse
Bonne fin de Journée
 
Re : Aide macro recherche groupé

Bonjour à tous,

Je joins ton fichier avec 2 procédure en Feuille1

une procédure évènementielle qui détecte un changement de valeur dans la colonne qui nous intéresse. et si c'est un oui alors copie les valeur avec la seconde procédure.

Si cette méthode ne te convient pas, tu peux l'adapter.

A+
 

Pièces jointes

Re : Aide macro recherche groupé

merci le ChTi

ça fonctionne 😀

petite chose, afin d'éviter de cliquer sur le bouton pour enclencher la macro, est-ce que cela peux fonctionner tout seul ?



par contre smotty je ne comprend pas il ne se passe rien avec le fichier
 
Dernière édition:
Re : Aide macro recherche groupé

Bonsoir à tous,

Je pense arriver après la bataille mais au cas où, voici le fichier qui fonctionne de façon automatique.
Je n'avais pas vu que les oui et non de la feuille 1 dépendaient de la feuille 2

Le fichier précédent fonctionnait avec des entrées de oui et non manuelles dans la feuille1

Bref celui-ci fonctionne de façon automatique

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

  • Question Question
Microsoft 365 Erreur UBound
Réponses
4
Affichages
293
Réponses
15
Affichages
793
Réponses
4
Affichages
738
Réponses
8
Affichages
398
Réponses
5
Affichages
917
Réponses
5
Affichages
575
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…