Oui je comprends votre code c'est exactement ce que je souhaite obtenir, vous avez bien cerné le problème. Mais je ne comprends pas pk ça ne marche pas. je vais essayer de faire le pas à pas et je vous tiens au courant de si j'ai un problème .
Oui je comprends votre code c'est exactement ce que je souhaite obtenir, vous avez bien cerné le problème. Mais je ne comprends pas pk ça ne marche pas. je vais essayer de faire le pas à pas et je vous tiens au courant de si j'ai un problème .
Partage ton classeur s'il ne contient pas de données confidentielles. Pour ma part, je suis pratiquement certain qu'il y a une erreur de saisie quelque part.
J'ai vraiment essayer mais je ne trouve toujours pas le problème
Sans données et sans le code que tu utilises, je ne sais pas t'aider plus, ma boule de cristal est en panne
Je vous joint le fichier excel.
Je vous ai mis les données que je pourrais recevoir après une analyse chimique.
FichierParentThermo2.xlsm
La cellule A3 de LD => 3 espaces entre AI203 et ppm... La cellule IA de Formatage_IM => 1 seul espace...
C'est pas faute d'avoir dit de vérifier les espaces et la saisie (3X)
Mais ducoup je dois faire comment pour régler ça ? Il faut forcément prendre en compte les espace pas l’intitulé ? Par exemple ça ne va pas détecter directement si il y a juste le AL2O3 ?
Ce n'était pas la demande de départ
On ne peut pas inventer une solution. On réfléchit aux cas qui se posent et on en déduit des règles de gestion. Si des données sont par exemple toujours constituées de 2 lettres puis un espace puis une valeur puis un espace, on peut faire quelque chose avec cela, mais il faudrait que tu précises ce que tu cherches.
On pourrait aussi supprimer les espaces excédentaires avec par exemple la fonction SUPPRESPACE d'Excel (ou en VBA) pour tester. Tout dépend de TES règles.
Bonjour,
je vous prie de m'excuser du retard pour la réponse.
Je suis désolé si je me suis fait mal comprendre concernant ma demande de départ. j'ai cru comprendre que par le biais de "*" dans la formule et bien il était possible que ça puisse détecter une partie ressemblante entre deux cellules et que ce n'était pas forcément obligé que les cellules soient exactement les mêmes pourque cela fonctionne.
Ce que je recherche c'est simplement que par exemple si il y'a "Al 167.019 nm" dans la colonne A de la 3ème feuille, de trouver la cellule correspondante dans la ligne 4 de la feuille 2 même si il y a le ppm en plus. Et que pareil pour les oxydes donc par exemple Al2O3 ppm dans la colonne A de la 3ème feuille, de trouver la cellule correspondante dans la ligne 4 de la feuille 2.
je vais tester la fonction SUPPRESPACE en vba afin de voir si cela fonctionne pour mon besoin.
Merci de votre compréhension.
Les jokers permettent de réaliser ce que tu souhaites, mais relis bien ma réponse relative aux espaces en trop dans une des recherches. Je pense que la première chose à réaliser est de nettoyer tes données pour être certain que les correspondances soient possibles. Relis mon message du 05/03 12h14.
- Il me semble que la meilleure façon de procéder est de d'abord nettoyer tes données.
- Les espaces en trop dont je parlais dans ce message sont clairement des erreurs de saisie qu'il convient de corriger avant d'aller plus loin.
- Vouloir bâtir des formules qui corrigent ce genre d'erreur est une entreprise inévitablement vouée à l'échec.
- Ca n'a aucun sens d'essayer de créer une formule qui trouve "A B" sur base de "A B"...
Vouloir bâtir des formules qui corrigent ce genre d'erreur est une entreprise inévitablement vouée à l'échec.
Ca n'a aucun sens d'essayer de créer une formule qui trouve "A B" sur base de "A B"...
Que voulez- dire par cela ? j'ai pas totalement saisie ce que vous souhaitiez dire
J'avais l'impression que les explications étaient claires.
Je reprends:
Dans le fichier que tu posté, il y a des problèmes d'espaces superflus sur certaines donnée (revoir mon post du 5/03 11h09, je cite les valeurs impliquées). Il me semble indispensable que tu nettoies d'abord tes données pour qu'elles soient concordantes. On peut, grâce aux jokers, trouver une valeur "qui commence par", mais si on doit en plus, au sein de la formule, qu'elle soit en Excel ou en VBA, "nettoyer" les données en envisageant tous les cas problématiques qui peuvent se présenter, on va arriver dans l'usine à gaz.
Relis posément mes messages sur les espaces, regarde ce qu'il en est dans tes fichiers et nettoie-les. Dans le fichier que tu as donné, lorsque je nettoie les valeurs (suppression des espaces inutiles), la macro fournie retrouve bien les bonnes valeurs d'une feuille à l'autre.
Je ne vois pas comment je pourrais être plus clair
Super c'est très clair maintenant.
Ce code se trouve incrusté dans ma feuille 3 dans le excel .
Est ce que vous pensez que l'avant dernière ligne du code est suffisante pour effacer les espaces en trop ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Private Sub Worksheet_Change(ByVal Target As Range) Columns("A").Replace "(", "" Columns("A").Replace ")", "" Columns("A").Replace " ", " " End Sub
Il faut voir comment tu changes tes valeurs en A. Si tu changes tes valeurs en les amenant par copier-coller de plusieurs valeurs, tu ne traiteras pas les cas de la même façon que si tu modifies les données une par une.
Si tes valeurs peuvent correspondre à un motif de saisie, c'est-à-dire une séquence de caractères. Dans ton cas, on pourrait penser que ta saisie doit correspondre à deux lettres, un espace, trois chiffres, un point, trois chiffres, un espace, nm. Ca correspond à un motif que l'on peut tester : "?? ###.### nm"
Il faut voir aussi si tu souhaites alerter de l'erreur ou essayer de corriger. Perso, je me contenterais d'alerter de l'erreur. Dès lors, si on est dans le cadre d'un motif de saisie à respecter, et en tenant compte de ce que tu as montré comme valeurs, on pourrait placer une mise en forme conditionnelle formulée avec la formule suivante: =NON(OU(A1="";ET(GAUCHE(A1;2)>="AA";GAUCHE(A1;2)<="ZZ";STXT(A1;3;1)=" ";STXT(A1;4;3)>="000";STXT(A1;4;3)<="999";STXT(A1;8;3)>="000";STXT(A1;8;3)<="999";STXT(A1;11;3)=" nm"))). Cette solution te permet d'amener plusieurs valeurs par copier-coller (de préférence un copier-coller valeurs).
Dans le cas où tu modifies les cellules une par une, tu pourrais utiliser le code suivant, qui va tester si tu modifies une cellule de A. Si c'est le cas, tu testes que la saisie correspond au motif. Si non, tu annules la saisies et tu affiches un message:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 Private Sub Worksheet_Change(ByVal Target As Range) On Error GoTo Catch If Target.Column = 1 And Target.Count = 1 Then If Not Target.Value Like "?? ###.### nm*" Then MsgBox "Raté" On Error GoTo Catch Application.EnableEvents = False Application.Undo End If End If Catch: Application.EnableEvents = True End Sub
Si tu modifies les valeurs en A par copier-coller, tu vas devoir passer par une boucle sur les valeurs saisies en A et tester les valeurs une par une pour qu'elles respectent le motif avec Like...
Bien entendu, si les données sont amenées d'un logiciel ou tu peux remarquer des erreurs récurrentes, tu peux te lancer dans le code que tu as montré, mais tu vas suer pour envisager tous les cas. On est vraiment dans un cas spécifique, ici.
Merci pour ces informations.
je partirais plus sur du copier-coller au moins ça va faciliter la tache à l'utilisateur au lieu de modifier les cases une par une. Si j'ai bien compris, il faut donc que je crée une boucle dans le code de a feuille 3 afin d'y incruster le code pour alerter l'erreur pour pouvoir amener plusieurs valeurs par copier-coller ?
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager