Recherchv sur seulement une partie d'une cellule

Bonjour le forum !

j'ai un fichier dans lequel j'ai des numéros de fctures dans la même cellule, comme dans le fichier joint.

problème : je ne peux pas faire de recherhV sur chaque numéro de facture du coup... Je souhaite aussi faire une MFC qui mette le numéro de facture en rouge si le numéro n'est pas trouvé dans une seconde feuille (dans la seconde feuille on a bien un numéro de facture par cellule.

Si quelqu'un a des idées je suis preneur !

merci à vous !

11exemple-forum.xlsx (9.14 Ko)

Bonjour,

même avec du VBA je ne sais pas si on pourrai mettre en rouge une partie du texte de la cellule A1

par contre pour afficher 1 ou 0 en colonne E c'est facile : =ESTNUM(CHERCHE(D3;$A$1))*1

Cordialement

Bonjour,

Voici une Sub pour colorer les numéros dans la cellule A1 (une fonction retourne une valeur ou un tableau de valeurs mais n'est pas vraiment faite pour exécuter des actions, elle pourrait fonctionner mais rendrait le truc instable) :

Sub Test()

    Colorer Range("A1"), Range("D10:D11")

End Sub

Sub Colorer(Cel1 As Range, Plage As Range)

    Dim Cel As Range
    Dim Pos As Integer

    Cel1.Characters(1, Len(Cel1.Value)).Font.ColorIndex = 0

    For Each Cel In Plage

        Pos = InStr(Cel1.Value, Cel.Value)

        If Pos > 0 Then

            Cel1.Characters(Pos, Len(Cel.Value)).Font.ColorIndex = 3
            Pos = 0

        End If

    Next Cel

End Sub

La Sub attend deux arguments, le premier est un Range qui représente la cellule où se trouvent les numéros de facture tous regroupés avec des retours à la ligne et l'autre est la plage de cellules où se trouvent les différents numéros (voir la Sub "Test")

Pour savoir si un numéro existe dans le paquet, une formule :

=SI(ESTERREUR(CHERCHE(D3;$A$1));0;1)

Merci à tous les deux pour vos réponses ! cependant je tiens à m'excuser je n'ai pas préciser quelque chose : il se peut que j'ai plusieurs cellules en colonne A...

par contre pour afficher 1 ou 0 en colonne E c'est facile : =ESTNUM(CHERCHE(D3;$A$1))*1

Pour savoir si un numéro existe dans le paquet, une formule :

=SI(ESTERREUR(CHERCHE(D3;$A$1));0;1)

Dans les deux cas j'aime bien c'est vraiment simple.... Par contre si j'ai plusieurs cellules en colonne A, es deux formules me renvoient 0 si je rajoute une cellule et donc que je met =SI(ESTERREUR(CHERCHE(D3;$A$1:$A$2));0;1)

Concernant le VBA c'est super top aussi !!! Merci ça me donne des idées pour plein d'autres choses aussi par contre même chose : dans le cas où j'ai plusieurs cellules et que je met range A1:A10 j'ai un message "incompatibilité de type".

Merci encore !

Edit : concernant le VBA, j'imagine faire une macro qui traitera une par une toutes mes cellules en colonne A et reprendra ta macro !

Bonjour,

Avec plusieurs cellules de données : =si(NB.SI($A$1:$A$2;"*"&D3&"*")>0;1;0)

Cordialement

Super merci bcp !

Bon je continue sur ma lancée : est-il possible de faire une recherv depuis les cellules A1:A10 afin d'écrire dans une autre cellule à droite si elles sont en zone D3:D4 ?

la difficulté étant que il y a parfois plusieursfactures par cellules en A1:A10...

Merci !

Concernant le VBA afin de mettre en rouge les cellules, je n'arrive pas à faire de macros puisqu'en fait on appliquait directement dans le sub la cellule A1... Quelqu'un aurait une idée pour modifier cela et mettre en rouge les factures sur plusieurs cellules ?

merci encore

Bonjour,

Voir pj avec formules matricielles si ça convient

Cordialement

5mezio47-63.xlsx (9.71 Ko)

Bonjour et merci,

Cependant j'ai deux questions stp :

  • je dois appliquer la formulle matricielle à chaque cellule à chaque fois ?
  • pourquoi y a-t-il un 2 en face de la facture 20170342 en colonne E ?

Merci

Bonjour,

pourquoi y a-t-il un 2 en face de la facture 20170342 en colonne E ?

tout simplement parce qu'il y a deux fois le même numéro 20170342, une fois dans chaque cellule !

Si tu veux un 0 ou un 1, tu peux utiliser cette formule :

=SI(NB.SI($A$1:$A$2;"*"&D7&"*")>0;1;0)

Concernant la coloration à l'intérieur des cellules A1:A2 (il peut y en avoir plus aussi bien dans la plage 1 que dans la 2 !) voici le code rectifié :

Sub Test()

    Colorer Range("A1:A2"), Range("D7:D10")

End Sub

Sub Colorer(Plage1 As Range, Plage2 As Range)

    Dim Cel1 As Range
    Dim Cel2 As Range
    Dim Pos As Integer

    For Each Cel1 In Plage1

        Cel1.Characters(1, Len(Cel1.Value)).Font.ColorIndex = 0

    Next Cel1

    For Each Cel1 In Plage1

        For Each Cel2 In Plage2

            Pos = InStr(Cel1.Value, Cel2.Value)

            If Pos > 0 Then

                Cel1.Characters(Pos, Len(Cel2.Value)).Font.ColorIndex = 3
                Pos = 0

            End If

        Next Cel2

    Next Cel1

End Sub

Re,

La formule fonctionne par ligne oui, mais pas compliqué de la faire fonctionner sur les deux cellules en même temps : voir feuille 2 en pj

et comme le dit Theze (que je salue) : en colonne E j'ai seulement compté le nb de fois qu'un N° de facture apparaît dans la colonne (limitée à 2 cellules)

Cordialement

4mezio47-63.xlsx (10.70 Ko)

Bonjour, et merci à vous deux !

Theze c'est pas mal du tout ça, mais en fait j'avais mal cerné le soucis je pense. je viens de comprendre finalement !

==> si une des cellule en D7:D10 est vide, alors tout se met en rouge.

j'ai shunté le truc en faisant en sorte que ma colonne soit remplie par xxxxx si il y a moins de 8 caractères dans ma cellule

merci encore à vous, je vais déclarer le problème comme résolu !

Bonjour,

Il suffit de tester si la cellule est vide :

Sub Colorer(Plage1 As Range, Plage2 As Range)

    Dim Cel1 As Range
    Dim Cel2 As Range
    Dim Pos As Integer

    For Each Cel1 In Plage1

        Cel1.Characters(1, Len(Cel1.Value)).Font.ColorIndex = 0

    Next Cel1

    For Each Cel1 In Plage1

        For Each Cel2 In Plage2

            Pos = InStr(Cel1.Value, Cel2.Value)

            If Pos > 0 And Cel2.Value <> "" Then

                Cel1.Characters(Pos, Len(Cel2.Value)).Font.ColorIndex = 3
                Pos = 0

            End If

        Next Cel2

    Next Cel1

End Sub
Rechercher des sujets similaires à "recherchv seulement partie"