Recuperer cellule contenant texte

bonjour a tous ,

dans le fichier joint, je voudrai que les cellules en jaune dans la colonne B soit automatiquement reporté dans le tableau en colonne MN.

(en jaune c'est pour que ce soit plus visible, la condition réelle est sur les cellules non vides qui ne contiennent pas le terme "K3" )

le tableau en MN doit adapter sa taille en fonction du nombre de cellules trouver ( ca peut aller jusqu'à 220)

10forum.xlsm (17.81 Ko)

merci d'avance de votre aide.

Bonjour Slygan, bonjour le forum,

Peut-être comme ça :

Sub ThauTheme()
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim TS As ListObject 'déclare la variable TS (Tableau Source)
Dim TD As ListObject 'déclare la variable TD (Tableau Destination)
Dim I As Integer 'déclare la variable I (Incrément)
Dim R As Range 'déclare la variable R (Recherche)
Dim LI As Integer 'déclare la variable LI (LIgne)

Set O = Worksheets("Feuil1") 'définit l'onglet O
Set TS = O.ListObjects("Tableau1") 'définit le tableau source TS
Set TD = O.ListObjects("tableau3") 'définit le tableau destination TD
TD.DataBodyRange.Delete 'efface les données de TD
For I = 1 To TS.ListRows.Count 'boucle sur toutes les lignes I du tableau source
    If InStr(1, TS.DataBodyRange(I, 2), "K3", vbTextCompare) = 0 Then 'si "K3" n'est pas contenu dans la donnée ligne I colonne 2 de TS
        Set R = TD.ListColumns(1).Range.Find("") 'définit la recherche R (recherche du vide dans la colonne 1 de TD)
        If R Is Nothing Or TD.ListRows.Count = 0 Then 'si aucune occurrence n'a été trouvée ou si TD ne comporte pas encore de ligne
            TD.ListRows.Add 'ajoute une ligne à TD
            LI = TD.ListRows.Count 'définit la ligne LI (dernière ligne de TD)
        Else 'sinon (au moin s une occurrence a été trouvée)
            LI = R.Row - TD.HeaderRowRange.Row 'définit la ligne LI (ligne de la première occurrence trouvée moins la ligne des en-têtes de TD)
        End If 'fin de la condition
        TD.DataBodyRange(LI, 1).Value = TS.DataBodyRange(I, 2) 'récupère l'outil dans la colonne 2 de TD
        TD.DataBodyRange(LI, 2).Value = TS.DataBodyRange(I, 1) 'récupère le plot dans la colonne 1 de TD
    End If 'fin de la condition
Next I 'prochaine ligne de la boucle
End Sub

Bonjour à tous !

Une proposition via Power Query :

Bonjour à tous,

Une autre avec filtre

5forum.xlsm (19.12 Ko)

djidji59430 , j'ai essayer de modifier une des valeurs du premier tableau.. erreur dans tout le tableau résultat.

JFL, j'ai pas powerquery...

thautheme....rien ne ce passe , ca ne fonctionne pas.

Bonjour à tous de nouveau !

Une autre avec filtre

Il est vrai que cette fonction est disponible dès Excel 2019 ! Bien vu.

@Slygan : Power Query est nativement intégré à Excel depuis....2016 Avec Excel 2019 vous pouvez donc disposer de cet outil.

Re,


Heu... C'est pas automatique, il te faut installer la macro puis la lancer... En pièce jointe ton fichier modifié :

3slygan-ep-v01.xlsm (29.42 Ko)

Bonsoir à tous !

Et pour respecter et la sélection et l'ordre des colonnes en utilisant la fonction FILTRE :

=INDEX(FILTRE(Tableau1;(NON(ESTNUM(TROUVE("K3";Tableau1[N° Outil]))))*(Tableau1[N° Outil]<>""));SEQUENCE(SOMME((NON(ESTNUM(TROUVE("K3";Tableau1[N° Outil]))))*(Tableau1[N° Outil]<>"")));{2\1})
4tuto.zip (57.59 Ko)

aieee je comprend le soucis...

ma version perso est de 2019 mais ma pro est de 2007 ....

pas de powerquery, de fonction filtre ou séquence ....

Bonjour à tous !

aieee je comprend le soucis...

ma version perso est de 2019 mais ma pro est de 2007 ....

pas de powerquery, de fonction filtre ou séquence ....

Aîe aïe.....

La modernité est un concept délicat pour certaines entreprises.....

Votre planche de salut se nomme, comme souvent, ThauThème....

JFL .... je saisis pas ton allusion a thautheme...?

Bonjour à tous !

JFL .... je saisis pas ton allusion a thautheme...?

Je résume :

- Pas de fonction FILTRE
- Pas de Power Query

Que reste-t-il comme solution présentée ?

Hé si !

Une version a formule matricielle !

=SIERREUR(INDEX(Tableau1[N° Outil];PETITE.VALEUR(SI((Tableau1[N° Outil]<>0)*(DROITE(Tableau1[N° Outil];2)<>"K3");LIGNE(INDIRECT("$1:"&LIGNES(Tableau1[N° Outil]))));LIGNE(INDIRECT("$1:"&SOMME(--(plage<>"K3"))))));"")

4forum.xlsm (18.16 Ko)

Bonne vieille formule des listes !

Crdlmt

Bonjour de nouveau à tous !

Hé si !

Hé non !

La solution matricielle ne faisait pas partie des solutions présentées.

djidji59430 , ta formule marche parfaitement bien....dans le fichier que tu as renvoyé.

en revanche quand je copie la formule pour la mettre dans mon fichier réel ... ca ne fonctionne pas et je n'arrive pas a voir ce qu'il faut que je change...

les deux documents ont une structure identique et le nom des tableaux et colonnes aussi.

a quelle partie de la formule je doit toucher pour que ca fonctionne de nouveau ??

Bonjour à tous !

Dans votre classeur de travail, la formule matricielle a bien été validée en mode....matriciel ?

j'avaic pas vu ......je viens de le faire... et non ca ne fonctionne pas .....

Bonjour à tous de nouveau !

euhhh jai pas fait attention et non j'avoue ne pas connaitre la validation matricielle ........

La validation de la formule s'effectue par l'usage simultané des trois touches : Ctrl + Maj + Enter.

Si l'opération est correctement réalisée, vous devez voir apparaître les accolades "{" et "}" dans la barre de formule.

c'est bon, j'ai les accolades,

mais la formule ne fonctionne pas .

Rechercher des sujets similaires à "recuperer contenant texte"