Tronquer un chiffre

C

Creepy

Guest
Hello à vous tous,

Je cherche à comparer deux colonnes d'EAN (code barres pours les non initiés lol).

Cependant dans une colonne j'ai des EAN à 12 chiffres genre : 123456789012 et dans la deuxième à 13 chiffres.

Pour pouvoir comparer les deux et trouver mes EAN orphelins il faut que j'enlève le dernier chiffre à droite de celui qui en à 13.

Ma question : Quel est le mieux :

1 - Tronquer l'ean de 13 chiffres ou comparer les 12 chiffres des EAN de la premiere et les 12 premiers de la deuxième colonne ?

Et comment faire ????

J'opterais plutot pour la deuxième comme ca je garde mon EAN intacte.

Merci d'avance

Creepy
 
J

Jean-Marie

Guest
Bonsoir, Creepy

Je te propose cette solution qui t'évitera d'avoir une cellule pour la formule

1) Sélectionne la plage se cellules contenant que 12 chiffres, pour l'exemple la plage A1:A100, la 2ème colonne sera B1:B100

2) clique sur le menu Format/Mise en forme conditionnelle

3) dans la boîte de dialogue, qui sur le bouton "la valeur de la cellule est", pour changer par "la formule"

4) dans la zone de saisie tape ceci =nb.si($B$1:$B$100;A1&"?")=0, puis clique sur le bouton format, et change les caractéristiques d'affichage des numéros n'ayant pas de correspondance, par exemple écrire en rouge.

Tu peux sélectionner les plages des cellules pour plus de facilité, mais fait attention Excel pas te proposé les symboles $, il faudra les enlever pour le 2ème critère.

5) valide deux fois

et tu verras tous les chiffres EAN à 12 chiffres orphelins en rouge

Bonne soirée

@+Jean-Marie
 
@

@+Thierry

Guest
Re Salut Jean Marie, Bonsoir Creepy, Le Forum


Moi J'ai plus simple, avec une ch'ti macro !! lol ...

Ici je pars du principe que EAN (12 Digit) est en colonne "A" et que EAN (13 Digits) est en colonne "B"....

Et puis y qu'à cliquer et zou !!!!!

Sub Creepy()
Dim EAN12 As Range
Dim Cell As Range
Dim i As Integer, x As Integer

Set EAN12 = Sheets(1).Range("A1:A" & Range("A65536").End(xlUp).Row)
Set EAN13 = Sheets(1).Range("B1:A" & Range("B65536").End(xlUp).Row)
x = 1

For Each Cell In EAN12
For i = 1 To EAN13.Count
If CStr(Cell) = CStr(Left(Cells(i, 2), 12)) Then
Cells(x, 4) = Cell: Cells(x, 5) = Cells(i, 2)
Cell.Interior.ColorIndex = 6: Cells(i, 2).Interior.ColorIndex = 6
x = x + 1
End If
Next i
Next Cell
End Sub

En colonne D et E tu auras le résultat des Matchings des deux Tableau EAN12 et EAN13, et dans les Colonnes A et B, les EAN matchants seront en Fond Jaune...

Je pense que çà devrait t'aider !

Bonne Nuit
@+Thierry
 
J

Jean-Marie

Guest
Re...

Plus simple explique lui comment lancer la macro, la coller dans un module et tout le bastringue. lol

Non Thierry ce n'est pas pour ça mon intervention.

La boucle que tu exécutes est-elle plus rapide, que le nb.si ?, je vois beaucoup de VBiste le faire (boucle), sans penser aux fonctions de recherches.

@+Jean-Marie
 
@

@+Thierry

Guest
Re Jean-Marie

Au non, Creepy est un bon disciple VBA, il a déjà des bases ! Et un copié collé dans un module Standard du VBE depuis le forum me prend moins de temps que de faire toutes les manips du Format Conditionnel...

Et puis la Liste des Code EAN 12 Digits en Colonne D qui matchent avec à coté les Code EAN 13 Digits en Colonne E, Creepy doit les faire à la main en cherchant les cellules qui seront coloriée en Rouge avec le format conditionnel ?

Je viens de faire tourner sur 1000 ligne en Colonne A et 500 lignes en Colonne B... moins d'1 minute... Et tout est fait, avec les deux colonnes A et B ayant des fonds de Couleur Jaune en cas de Matching, plus donc le report en D et E ...

Et au fait je n'ai même pas besoin de savoir combien il y a de lignes, puisque la macro s'étend dynamiquement sur les deux plages.

Disons que les "Vbistes", comme tu dis, ont tendance à tout faire d'un coup, justement pour pas se compliquer la vie, et, revers de la médaille, on ne fait plus d'effort pour connaitre les vraies fonctions d'Excel, çà c'est exact, je dois l'admettre.

Et d'ailleurs je me rends compte que j'avais pris le problème à l'envers, en cherchant les EAN qui Matchaient, mais en fait Creepy cherche les Orphelines !! Lol, Enfin JUst For THe Fun !!!

Bonne Nuit

@+Thierry
Take it Easy Just For The Fun​
 
C

Creepy

Guest
Bonjour à tous,

Désolé pour cette reponse tardive mais je croule sous le travail !!

Merci @+Thierry pour cette réponse, je n'en demandais pas temps mais c'est bien agréable.

Mais il y a une petite erreur (sous excel 97 en tout cas) il faut mattre cette ligne aussi :

Dim EAN13 As Range

Sinon ca plante !! enfin peut être pas sous 2000 !

+ All et encore Merci

Creepy
 

Discussions similaires