n'appartient pas à une liste

f69815

XLDnaute Occasionnel
bonjour et bonsoir,

peut-être que la question est deja posée mais j'ai du mal à exprimer la recherche.

j'ai deux feuilles, une avec des trigrammes de 000 à zzz, l'autre feuille contient des trigrammes deja utilisés avec des quadrigrammes associés (ex : 000 et 0000, 0001,.....000z).

je veux connaître le premier trigramme non utilisé, sachant qu'ils ne sont pas utilisés par ordre croissant dans ceux utilisés, c'est l'anarchie.

merci
 

Tibo

XLDnaute Barbatruc
Re : n'appartient pas à une liste

Bonsoir,

Pourrais-tu joindre un fichier avec quelques exemples de ce que tu as et en indiquant ce que tu veux obtenir.

Précise également (pour moi tout au moins), ce qu'est un trigramme ou un quadrigramme ?

A te (re)lire avec un bout de fichier

@+
 

f69815

XLDnaute Occasionnel
Re : n'appartient pas à une liste

Bonsoir,

Pourrais-tu joindre un fichier avec quelques exemples de ce que tu as et en indiquant ce que tu veux obtenir.

Précise également (pour moi tout au moins), ce qu'est un trigramme ou un quadrigramme ?

A te (re)lire avec un bout de fichier

@+

merci de ton intérêt,

un trigramme c'est trois lettres ( aaa, aab,aac, etc ou trois chiffres 123, 124, 125, etc)
je te laisse deviner pour le quadrigramme ?

pour le fichier je vais le faire, mais il faut que je le travaille car il a plus de 40000 lignes.

à bientôt
 

f69815

XLDnaute Occasionnel
Re : n'appartient pas à une liste

bonsoir,

voici le fichier, très court.

une feuille : utilisé, et une autre utilisable

dans la feuille "utilisable" ,il y a normalement, toute les combinaisons possibles, combinant les lettres a à z et les chiffres 0 à 9 (46657 combinaisons).

dans la feuille utilisée il y a les trigrammes deja utilisés, ainsi que les quad associés plus d'autres infos concernant les codes SIREN et NIC des entreprises.

je voudrai afficher le premier trigramme de la feuille "utilisable" qui n'est pas encore utilisé dans la feuille "utilise", afin de pouvoir lui attribuer un code SIREN et NIC.

suis-je clair, car à cet heure ci, pour moi, c'est extinction des feux.

bonne nuit
 

Pièces jointes

  • utilisable.xls
    22 KB · Affichages: 52

job75

XLDnaute Barbatruc
Re : n'appartient pas à une liste

Bonsoir,
Voici une macro sélectionnant le 1er trigramme non utilisé.
En espérant que cela vous convient.
Code:
Sub Trigram()
Dim absent As Boolean
Sheets("utilisable").Activate
Range("B1").Select
For Each cel1 In Range("A1", Range("A65536").End(xlUp))
absent = True
For Each cel2 In Sheets("utilise").Range("A2", Sheets("utilise").Range("A65536").End(xlUp))
If Left(cel2, 3) = cel1 Then absent = False: Exit For
Next
If absent Then cel1.Select: Exit Sub
Next
End Sub
A+
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : n'appartient pas à une liste

Re
Le temps de calcul de la précédente macro risque d'être très long.
Essayez cette version :
Code:
Sub Trigram()
Dim R As Range
Sheets("utilisable").Activate
Range("B1").Select
Set R = Sheets("utilise").Range("A1", Sheets("utilise").Range("A65536").End(xlUp))
For Each cel In Range("A1", Range("A65536").End(xlUp))
If IsError(Application.Match(cel, R, 0)) Then cel.Select: Exit Sub
Next
End Sub
A+
 

f69815

XLDnaute Occasionnel
Re : n'appartient pas à une liste

bonjour,
merci jha pour ta proposition, j'avais pensé à cette idée, mais je cherche plutôt du code. surtout que le nombre de ligne de la feuille "utilise", augmente à chaque création à minima de deux lignes.

merci job75, ta solution me convient et rapide, le 2ème code, au vu du nombre de lignes (> à 40000) dans les deux feuilles.

merci à vous deux
 

Pyrof

XLDnaute Occasionnel
Re : n'appartient pas à une liste

bonjour,

Avec retard voici une macro

Dim tab1
Set tab1 = CreateObject("Scripting.Dictionary")

ligne = 1
While Sheets("utilisable").Cells(ligne, 1) <> ""
cle = Sheets("utilisable").Cells(ligne, 1)
tab1(cle) = 0
ligne = ligne + 1
Wend

ligne = 2
While Sheets("utilise").Cells(ligne, 1) <> ""
cle = Sheets("utilise").Cells(ligne, 1)
If IsEmpty(tab1(cle)) = False Then tab1(cle) = 1
ligne = ligne + 1
Wend

For Each tmp In tab1
cle = tmp
If tab1(cle) = 0 Then
Exit For
End If
Next
MsgBox "Trigramme non utilisé : " & cle
End Sub
 

Statistiques des forums

Discussions
312 544
Messages
2 089 452
Membres
104 167
dernier inscrit
nourisebai