récupérer données sous conditions

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

N

Neptune

Guest
Bonjour,

Je voudrais faire un programme avec un bouton qui me permette de ressortir les datas manquantes sous condition.

Ex:

Ma feuille "STE_E44XXb.." contient plusieurs données. Je souhaiterais que mon programme vérifie dans un premier temps si la valeur contenu dans A3 se trouve dans une des cellues de ma feuille "LF" en colonne C puis ensuite la cellule juste en dessous et ect...

Si jamais on ne trouve pas alors le programme doit alors essayer avec les substitues en C3 puis ensuite en D3...(attention car des fois il ya bcp de substitutes notés en dessous tels que par exemple B4 => C4,D4,E4 mais aussi C5, D5, E5 puis C6,D6, E6.)

Pour l'instant et grâce à Skoopi , le programme ne vérifie que le colonne A mais pas les substitues...


Les valeurs manquantes sont à retourner dans la feuille "Sheet3" à la suite.

Merci de m'aider
 

Pièces jointes

Re : récupérer données sous conditions

Ce qui me gêne principalement c'est que certaines valeurs des colonnes susbstitues ne sont pas sur la même ligne que le model principal...Cela m'embêterai de devoir mettre manuellement sur la même ligne afin d'effectuer une boucle plus facilement, ce que je pense être capable de faire(enfin je pense,lol). Je risque d'avoir beaucoup de fichier similaires pour lesquels certains model ont plusieurs substitues!

Un coup de pouce m'aiderait bien

Merci d'avance
 
Re : récupérer données sous conditions

Bonjour Neptune,

Ci-joint un essai. J'ai ajouté un tableau qui est rempli avec chaque référence et ses substitues et la recherche se fait jusqu'à ce qu'on trouve un élément dans LF.

@+

Gael
 

Pièces jointes

Re : récupérer données sous conditions

Merci Gael!

Vu que tu maitrises, pourrais-tu stp juste me dire comment fait-on pour choisir une plage de données décallé(avec offset?).

Mon programme me retournait les valeurs pas trouvées en rapport avec ma plage C4:E6! et du coup il me mettait aussi autant de fois le résultat lorsque c'était pas trouvé!En fait je voulais juste qu'il aille voir dans les 9 cellues (cellues substitues).Dans mon programme , il est du coup bloqué en C4:E6!!
Tu vois ce que je veux dire? lol


'Private Sub CommandButton1_Click()
' Dim derLigA As Long, derLigCLF As Long
' Dim PlageA As Range, PlageCLF As Range, PlageSub As Range
' Dim CellA As Range, Trouve As Range, CellSub As Range
' Dim LigA As Long, LigCLF As Long

' Effacer la feuille Sheet 3
' Worksheets("Sheet3").Cells.Clear

' Dernière ligne en colonne A et CLF
' derLigA = Sheets("STE_E44XXB_5011-4191-A.02.22").Range("A" & Cells.Rows.Count).End(xlUp).Row
' derLigCLF = Sheets("LF").Range("C" & Cells.Rows.Count).End(xlUp).Row

' Définition des plages
'PLage de Sub contenant au maximum 9 données
' Set PlageSub = Sheets("STE_E44XXB_5011-4191-A.02.22").Range("C4:E6" & derLigaA)
' Set PlageA = Sheets("STE_E44XXB_5011-4191-A.02.22").Range("A3:A" & derLigA)
' Set PlageCLF = Sheets("LF").Range("C3:C" & derLigCLF)

' LigA = 1

' Boucle sur chaque cellule dans la plage A
' For Each CellA In PlageA

' Rechercher la cellule dans la plage CLF via Plage A
' Set Trouve = PlageCLF.Find(CellA.Value, , LookIn:=xlValues, lookat:=xlWhole)

' Si la valeur n'est pas trouvée avec colonne A alors
' If Trouve Is Nothing Then

'Boucle sur chauqe cellule dans la plage Sub
' For Each CellSub In PlageSub

'Rechercher la cellule dans la plage Sub
' Set Trouve = PlageCLF.Find(CellSub.Value, , LookIn:=xlValues, lookat:=xlWhole)

' If Trouve Is Nothing Then

'Retourne la valeur contenu en A dans la colonne A de sheet 3
' Sheets("Sheet3").Range("A" & LigA).Value = CellA.Value
' Sheets("Sheet3").Range("B" & LigA).Value = CellA.Offset(0, 1).Value

'Evite de réécrire par dessus
' LigA = LigA + 1
' End If
' Next CellSub
' End If

' Next CellA


' End Sub
 
Re : récupérer données sous conditions

Gael, ça sert à quoi la macro dans modules!

Sub Macro1()
'
' Macro1 Macro
' Macro enregistrée le 03/10/2008 par Gaël Domergue
'

'
Columns("A:A").Select
Selection.ClearContents
Range("D13").Select
End Sub

J'ai juste copié ton prog sans cela et ça fonctionne aussi...!?!
 
Re : récupérer données sous conditions

Re bonjour,

La macro dans le module 1 ne sert à rien, c'est une erreur de manip.

Pour ton code, je l'ai essayé, il pose à mon avis les problèmes suivants:

- Lorsque tu définis "PLAGESUB", tu écris .Range("C4:E6" & derLigaA) ce qui crée une plage de C4:C641, il faudrait déjà enlever le "6".

- Plagesub contient l'ensemble de tous les codes substitues pour toutes les références, donc à chaque référence colonne A non trouvée, tu fais une recherche pour tous les substitues de toutes les références.

- Et à chaque substitue non trouvé, tu écris la référence initiale sur une nouvelle ligne dons autant de lignes que de substitues non trouvés alors qu'il faudrait écrire le référence seulement en fin de boucle si rien n'a été trouvé.

Pour les offset, tu l'as utilisé dans ta procédure, le premier chiffre indique le décalage de ligne et le second le décalage de colonne. Tu peux t'en servir pour décaler une plage comme par exemple:

Code:
Range(CellA.Offset(0, 2).Address, CellA.Offset(2, 4).Address).Select

mais ce n'est pas très pratique.

@+

Gael
 
Re : récupérer données sous conditions

En fait je voudrais que la plageSub correspond uniquement aux substitues liés au model principal.
Ce n'est pas la peine de rechercher dans tout c'est-à-dire "C3:E" car les seuls substitutes ne peuvent que être dans les 9 neufs cellues situés à droite du model principal.
Des fois , le model à uniquement 2 substitues, des fois 9 au maximum...il faut donc chercher dans 9 cellules.
Dans ce cas là , il me retourne plein de fois la valeur car je ne sais pas comment lui dire de me donner la valeur de la cellule en A en fin de boucle...Il faut mette "Exit " ou quelque chose comme ça?

En fait pour l'offset , je voulais l'utiliser avec Range!(avec cell ça va mais range euh!!) je voulais juste lui dire que plutôt de mettre :

PlageSub = Sheets("STE_E44XXB_5011-4191-A.02.22").Range("C3:E" & derLigA)

Je voulais quelquechsoe du style:

PlageSub = Sheets("STE_E44XXB_5011-4191-A.02.22").Range("A3.Offset(0, 3):E" & derLigA)

Ceci dans le but de lui définir la plage à partir de A3. Mais bon c'est pas trop nécessaire, c'est surtout pour moi car je débute et ça m'intéresse de connaître un peu les fonctions de base.
 
Re : récupérer données sous conditions

re,

Pour que tu t'y retrouve mieux, j'ai repris ta procédure et fait juste les modifs nécessaires pour qu'elle fonctionne:

- Ajout d'une boucle pour chercher les lignes blanches en desoous de la référence afin de déterminer la plage de substitues

- Définition de la plage de substitues chaque fois que le référence n'est pas trouvée

- sortie de boucle si une référence est trouvée (exit for)

- Si rien n'est trouvé en fin de boucle, on écrit la référence dans Sheet3

@+

Gael
 
Re : récupérer données sous conditions

Bonjour,

J'ai trouvé un bog dans ce programme.

Si je rentre dans l'onglet LF sous Model: HP3335A alors tout ce se passe bien; l'application me retire bien le HP3335A

Si je rentre un substitue: 1 par exemple. ça fonctionne aussi , on me retire bien le HP3335A

PAR CONTRE lorsqu'il ya une Cellule vide au dessus de HP3335A, si je rentre HP3335A ça fonctionne toujous MAIS DES QUE je rentre un de ses susbtitutes je comprends plus rien car l'appli me supprime les Cellules HP3325B et ou FLU5720A!!!!cela dépend du sustitues que rentre!!!je comprends rien!

Où le problème dans le prog de GAEL?

Merci
 

Pièces jointes

Re : récupérer données sous conditions

Gael, j'ai modifié mais ça ne fonctionne toujours pas!

ça ne gère toujours pas les substitues pour lesquels la cellA est vide!

Si je rajoute un espace entre les deux "" , ça fait des trucs bizarres!

Pourtant je pensais que "" et " " c'était identique.

Merci
 
Re : récupérer données sous conditions

Bonsoir Neptune,

Ci-joint ton fichier modifié, j'ai fait des tests en mettant des lignes vierges un peu partout et tout a l'air correct.

La boucle a été augmentée de (i=4 to 6) pour tenir compte des lignes supplémentaires.

Peux-tu essayer sur cet exemple et me dire dans quel cas cela ne marche pas?

Sinon, "" correspond à "cellule vide" et " " représente un espace, la cellule doit contenir un espace.

@+

Gael
 

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
Assurez vous de marquer un message comme solution pour une meilleure transparence.
Retour