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

XL 2016 Copier une cellule de la ligne selon un critère

Skaph

XLDnaute Nouveau
Bonjour à tous,

Je me permet de poster un message sur le forum suite à de nombreuses recherches, (j'ai trouvé des choses mais je n'arrive pas à les adapter à mon classeur), je ne suis pas très forte en VBA, mais je souhaite faire un petit outil qui peut me permettre de gagner du temps.
Je m'explique :
Mon classeur contient les compétences maîtrisée ou non des techniciens sur plusieurs produits.
Chaque produit a donc sa feuille avec les différentes compétences, donc il contient en gros 3 colonnes (une avec la compétences, une je ne maîtrise pas, et une je maîtrise). Lorsqu'une compétences est maîtrisée ou non, il y a un "X" dans la colonne correspondante.
L'idée est d'extraire la valeur de la cellule ou se situe la compétences qui contiennent X dans je ne maîtrise pas (exemple : si la compétence "réaliser un test" n'est pas maîtrisée, juste extraire "réaliser un test" sur un autre page.

Je joins un fichier exemple pour vous éclairer car je pense ne pas être claire dans mes explications.

Je vous souhaite une bonne journée et je vous remercie déjà d'avance.
 

Pièces jointes

  • exemple.xlsx
    13 KB · Affichages: 6

JHA

XLDnaute Barbatruc
Bonjour à tous,

Un essai par formules
VB:
=SIERREUR(DECALER(INDIRECT($A10&"!A1");PETITE.VALEUR(SI(INDIRECT($A10&"!C1:C100")="X";LIGNE(INDIRECT($A10&"!C1:C100"))-1);COLONNE(A:A)););"")

JHA
 

Pièces jointes

  • exemple (5).xlsx
    15.2 KB · Affichages: 8

Skaph

XLDnaute Nouveau
Merci de m'avoir apporter une solution, as-tu une solution en VBA plutôt ?
J'ai trouvé un code qui est le suivant et que j'ai su adapter :
Sub FiltreDeg()

Dim Lig As Long
Dim Col As String
Dim NbrLig As Long
Dim NumLig As Long

Sheets("Start").Activate ' feuille de destination

Col = "F" ' colonne de la donnée non vide à tester
NumLig = 76
With Sheets("Degroupage") ' feuille source
NbrLig = .Cells(65536, Col).End(xlUp).Row
For Lig = 2 To NbrLig
If .Cells(Lig, Col).Value = "X" Then
.Range("D" & Lig & ":E" & Lig).Copy
NumLig = NumLig + 1
Cells(NumLig, 2).Select
ActiveSheet.Paste
End If
Next
End With

End Sub

Cependant, j'arrive à extraire seulement les lignes d'une page, même si je change la feuille source.
 

Skaph

XLDnaute Nouveau
Bonjour à tous,

Un essai par formules
VB:
=SIERREUR(DECALER(INDIRECT($A10&"!A1");PETITE.VALEUR(SI(INDIRECT($A10&"!C1:C100")="X";LIGNE(INDIRECT($A10&"!C1:C100"))-1);COLONNE(A:A)););"")

JHA


Bonjour,
J'ai essayé d'appliquer ça à mon fichier, ça fonctionne pour le premier, la valeur est bien reportée, mais quand j'étire les cases, rien ne se passe, il n'y a aucune autre valeur copier.

Pouvez-vous me dire quelle est l'erreur ?

Merci d'avance
 

Pièces jointes

  • excel.PNG
    48.4 KB · Affichages: 10

JHA

XLDnaute Barbatruc
Bonjour à tous,

C'est une formule matricielle à valider par Ctrl+Maj+Entree, après validation, tu dois avoir des accolades de chaque côté de la formule.
ensuite copier vers la droite

JHA
 

Skaph

XLDnaute Nouveau
Bonjour à tous,

C'est une formule matricielle à valider par Ctrl+Maj+Entree, après validation, tu dois avoir des accolades de chaque côté de la formule.
ensuite copier vers la droite

JHA


Pour la validation de la formule, j'ai bien les {} qui apparaissent, cependant maintenant quand je tire vers la droite, c'est des 0 qui s'affichent..
 

Pièces jointes

  • excel2.PNG
    42.7 KB · Affichages: 11

JHA

XLDnaute Barbatruc
Bonjour à tous,

C'est normal si tu n'as pas d'autres données. Pour ne pas "voir" les "0", tu vas dans Accueil/nombre/Personnalisée et tu mets "Standard;;" (sans les guillemets bien sur)

JHA
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…