Microsoft 365 sierreur et recherche

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Bonjour à toutes et à tous,

Je butte sur un code que je n'arrive pas à faire malgré tous mes essais :mad:
Ce que je voudrais faire :
si les 6 derniers chiffres de G2 = I2 alors copier I2 en J2
Pourriez-vous m'aider ?
Je "tourne" autour du bon code mais je n'y arrive pas.
J'en suis là :
VB:
Sub Macro1()
[a2].Select
    If Cells(ActiveCell.Row, 7).Value = "=IF(VALUE(RIGHT(Cells(ActiveCell.Row, 7),6)) = Cells(ActiveCell.Row, 9)" Then
    Cells(ActiveCell.Row, 10) = Cells(ActiveCell.Row, 9).Value
    End If
End Sub
Je joins un fichier test.
Avec mes remerciements,
Je vous souhaite une belle journée,
Amicalement,
lionel,
 

Pièces jointes

  • Test_forum.xlsm
    18 KB · Affichages: 6

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Bonjour Sylvanu, M12, le Forum,

Encore merci à vous 2 pour vos codes :)

J'ai choisi le code de Sylvanu qui semble me correspondre mieux à l'intégration dans les codes de mon fichier.
Toutefois, le code que j'en ai tiré avec 6 condition est long :
VB:
Sub Sylvanu()
efface
[a2].Select
    If Val(Right(Cells(ActiveCell.Row, 7), 6)) = Cells(ActiveCell.Row, 8) _
       Or Val(Right(Cells(ActiveCell.Row, 7), 7)) = Cells(ActiveCell.Row, 8) _
       Or Val(Right(Cells(ActiveCell.Row, 7), 8)) = Cells(ActiveCell.Row, 8) _
       Or Val(Right(Cells(ActiveCell.Row, 7), 9)) = Cells(ActiveCell.Row, 8) _
       Or Val(Right(Cells(ActiveCell.Row, 7), 10)) = Cells(ActiveCell.Row, 8) _
       Or Val(Right(Cells(ActiveCell.Row, 7), 11)) = Cells(ActiveCell.Row, 8) Then
       Cells(ActiveCell.Row, 11) = Cells(ActiveCell.Row, 8)
    Else
    Cells(ActiveCell.Row, 11) = "vous recherchez - de 6 chiffres ou n'existe pas !"
    End If
End Sub
Je voudrais le raccourcir mais je ne sais pas faire !
Est-ce possible ?
Merci à vous :)
lionel,
 
Dernière édition:

patricktoulon

XLDnaute Barbatruc
re
bonjour le fil
@arthour973
sinon tu met ça dans un module
VB:
Function fonction_perso(cel As Range, cel2 As Range)
    If cel = "" Or cel2 = "" Then
        fonction_perso = ""
    Else
        If Val(Right(cel.Text, 6)) = Val(cel2.Text) Then
            fonction_perso = Val(cel2.Text)
        Else
            fonction_perso = "non!"
        End If
    End If
End Function
et dans ta cellule en "J" tu met
=fonction_perso($G2;$I2)
et tu étends la formule jusqu'ou tu veux
tu a la gestion des résultat négatifs et des vides dans la fonction
sans prolonger la formule avec des SI ET OU
TU AURA DONC

soit le right 6
soit "non!"
soit rien si g ou i ou les deux sont vides
 
Dernière édition:

job75

XLDnaute Barbatruc
Bonjour Lionel, sylvanu, M12, patricktoulon,

Je ne vois vraiment pas pourquoi il faudrait du VBA puisque cette formule Excel va très bien :
Code:
=SI(ET(NBCAR(H2)>5;NBCAR(H2)<12;DROITE(G2;NBCAR(H2))=""&H2);H2;"n/a")
A+
 

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Bonjour Gérard, sylvanu, M12, Patrick,

J'ai tout testé encore merci pour vos codes et formules :)
Ce qui me correspond le mieux est la formule : =SIERREUR(SI(CHERCHE(J4;G4);J4;FAUX);"")

Mais j'ai 2 soucis :
1 - J'ai besoin de chercher de G4 à H dernière cellule non vide et je n'arrive pas à modifier,
2 - de coder en VBA la formule modifiée.

Malgré mes essais, je n'y arrive pas :mad:
Auriez-vous les solutions ?

Encore un grand merci à vous tous :)
Amicalement,
lionel,
 
Dernière édition:

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Bonjour Gérard :)
C'est vrai ... mais avec tous les tests et essais ainsi que les codes et formules, j'en suis arrivé à mieux apprécier mon besoin.
et SIERREUR(SI(CHERCHE(J4;G4);J4;FAUX);"") permet de trouver la valeur cherchée que si elle est à droite dans la ou dans les cellules dans lesquelles se fait la recherche.

Encore merci pour les réponses déjà reçues,
Lionel :)
 

Statistiques des forums

Discussions
313 077
Messages
2 095 073
Membres
106 166
dernier inscrit
anesalis