Extraire une donnée en fonction de plusieurs valeurs

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

R

Rootdown

Guest
Extraire une donnée en fonction de plusieurs variables dans deux tableaux

Bonjour,
j'ai un blocage que je ne saisi pas.
Je vous expose :
Deux tableaux avec des données en commun.

En fonction d'une valeur du premier (dans l'exemple, si je suis en semaine 2),
je veux vérifier si des produits identiques sont dans le deuxième tableau, en extraire les quantités et rapatrie dans le premier.
Ma recherche se fait si la semaine est 2, et sur 4 colonnes (doivent correspondent : espèce, variété, couleur et fournisseur).

J'étais plutôt content de moi.
Et puis finalement : "Erreur de compilation, fonction ou Sub non défini".
J'ai pas l'impression d'utiliser des fonctions très compliquer mais ça ne fonctionne pas 🙁
Si quelqu'un veut bien m'aiguiller. Merci par avance.
 

Pièces jointes

Dernière modification par un modérateur:
Re : Extraire une donnée en fonction de plusieurs valeurs

Bonjour Rootdown, bonjour le forum,

la syntaxe exacte pour faire référence à un onglet est
Worksheets("Autre")
Worksheets("Planning")
Tu as oublié tantôt le k tantôt le s et les guilemets " avant et après le nom de l'onglet.

Une fois ces erreurs corrigées, ta macro fonctione mais je vais y regarder de plus près pour voir si on ne peu pas aussi simplifier ton code.
 
Re : Extraire une donnée en fonction de plusieurs valeurs

Effectivement, merci Robert.
A force de chercher, on en voit plus rien même l'évidence 🙄

Une fois tout ça corriger ça fonctionne presque.
les données qui ne sont pas en semaine se colore en noir, ca c'est ok,
mais la valeur que je veux pour les produits de semaine ne se copient pas.
😕
 

Pièces jointes

Re : Extraire une donnée en fonction de plusieurs valeurs

Bon ca y est ca fonctionne.
J'avais un décalage dans une colonne et la variable quantité n'etait pas déclaré.
Merci de m'avoir débloque.
Je joint ma version qui marche.
Et si il y a effectivement moins tordu que ce que j'ai fait je suis preneur 🙂
 

Pièces jointes

Re : Extraire une donnée en fonction de plusieurs valeurs

Bonjour Rootdown, bonjour le forum,

Je ne comprends pas pourquoi toutes ces variables publiques mais comme je n'ai pas le contexte, j'imagine que tu t'en sers pour d'autres macros et j'ai laissé tel quel.
J'ai juste supprimé les Select (sélection d'onglets) qui ralentissent le code en les remplassant par des With. Juste un petit doute sur la variable quantite récupérée à la colonne N mais je ne suis pas sûr de l'onglet. J'ai mis Autre tu modifieras éventuellement.
 

Pièces jointes

Re : Extraire une donnée en fonction de plusieurs valeurs

Merci Robert,
effectivement ça va beaucoup plus vite sans la sélection d'onglet.
Je ne pensais pas que ca jouait autant, je ferais beaucoup plus attention maintenant.

Pour les variables public, a vrai dire, je sais pas comment les mettre autrement ?
Et non elles ne sont pas utiliser par ailleurs.
 
Re : Extraire une donnée en fonction de plusieurs valeurs

Bnjour Rootdown, bonjour le forum

un autre code sans utiliser autant de variables...
Code:
Sub test()
Dim cel1 As Range 'déclare la variable cel1 (CELlule 1)
Dim cel2 As Range 'déclare la variable cel2 (CELlule 2)
Dim p As Worksheet 'déclare la variable p
Dim a As Worksheet 'déclare la variable a
 
Set p = Sheets("Planning") 'définit la variable p
Set a = Sheets("Autre") 'définit la variable a
 
For Each cel1 In p.Range("A2:A" & p.Range("A65536").End(xlUp).Row) 'boucle 1 sur toutes les cellules éditée de la colonne A (onglet "Planning")
    If cel1.Offset(0, 4).Value = 2 Then 'condition 1 : si la semaine est 2
        For Each cel2 In a.Range("A2:A" & a.Range("A65536").End(xlUp).Row) 'boucle 2 sur toutes les cellules éditée de la colonne A (onglet "Autre")
            'conditions 2 : 'si les valeurs des colonnes B, C et D sont identiques et que la colonne F ("Planning") est identique à E ("Autre")
            If cel1.Offset(0, 1).Value = cel2.Offset(0, 1).Value And _
                cel1.Offset(0, 2).Value = cel2.Offset(0, 2).Value And _
                cel1.Offset(0, 3).Value = cel2.Offset(0, 3).Value And _
                cel1.Offset(0, 5).Value = cel2.Offset(0, 4).Value Then
                cel1.Offset(0, 6).Value = cel2.Offset(0, 5) 'récupère la quantité
            End If 'fin de la condition 2
        Next cel2 'prochaine cellule édité de la colonne A (boucle 2)
    Else 'sinon (condition 1)
        cel1.Offset(0, 6).Interior.ColorIndex = 1 'colore la cellule de la colonne G ("Planning") en noir
    End If 'fin de la condition 1
Next cel1 'prochaine cellule éditée de la colonne A ("Planning")
End Sub
 
- 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.

Discussions similaires

A
Réponses
11
Affichages
2 K
A
N
Réponses
2
Affichages
1 K
N
N
Réponses
7
Affichages
1 K
N
T
Réponses
7
Affichages
899
tit32600
T
S
Réponses
4
Affichages
1 K
S
T
Réponses
44
Affichages
6 K
Thibault123
T
Retour