Chercher un élément pour vérifier son existence

Bonjour,
Je bosse sur une BDD ou je dois rajouter des éléments dans 2 feuilles différentes a la fois, ces éléments sont de type 001-03-22-M1-C.
Principe:
1- Taper le nom de l’élément dans un moteur de recherche.
2- Une fois l’élément trouvé on le sélectionne, puis on clique sur un bouton pour le vérifier.
3- Avant de le vérifier, chercher si l’élément existe dans les 2 feuilles
A- Si l’élément n’existe pas:
- On le rajoute dans la colonne D de la 1ere feuille avec la date dans la colonne K comme suit :
001-03-22-M1-C-001 ( Rajouter 001 a la fin) [ Cette partie fonctionne]
- On le rajoute aussi dans la 2eme feuille range C2 et la date dans D2. [Cette partie ne fonctionne pas :confused: ]

  B-Elément existe: 
  - On le rajoute dans la 1er feuille avec incrémentation de la dernière valeur:
    par ex:  001-03-22-M1-C-004 devient 001-03-22-M1-C-005 [ pb ici c'est que mon code il me fait 

001-03-22-M1-C-004-005 :/]
- On le rajoute dans la 2eme feuille, en recherchant l N° du début par ex 001 puis on rajoute dans la bonne cellule [J’ai une erreur dans mon code que je n’arrive pas a identifier :confused: ]

Code est dans userform Recherche, bouton « Controler »
Merci pour votre aide. TEST_L 2.xlsm (165,9 Ko)

Bonjour

C’est normal :

'-------Pb ici, code ne reconnait pas numéro1
colonne = ws_Verif.Rows(« 1:1 »).Find(What:=numéro1, After:=ws_Verif.Range(« A1 »), LookIn:=xlValues, LookAt:=xlWhole).Column 'Trouver la bonne colonne qui correspond au numero de la lame
If colonne > 0 Then
'Ajouter la lames controleé dans la feuille Verif_Mx
ws_Verif.Activate
ws_Verif.Cells(ws_Verif.Rows.Count, colonne).End(xlUp).Offset(1, 0) = Me.ListBox1.Value & « -001 »
ws_Verif.Cells(ws_Verif.Rows.Count, colonne).End(xlUp).Offset(-1, 0) = Date2
End If

la donnée « 001 » recherchée est absente onglet « Verif_M1 » ligne 1 donc bug inévitable

Pour éviter ce bug 2 choses :

mettre la donnée en ligne 1 onglet « Verif_M1 »

et pour éviter un plantage désagréable mettre cette ligne :

On Error Resume Next ainsi :

On Error Resume Next
colonne = ws_Verif.Rows(« 1:1 »).Find(What:=numéro1, After:=ws_Verif.Range(« A1 »), LookIn:=xlValues, LookAt:=xlWhole).Column 'Trouver la bonne colonne qui correspond au numero de la lame
If colonne > 0 Then
'Ajouter la lames controleé dans la feuille Verif_Mx
ws_Verif.Activate
ws_Verif.Cells(ws_Verif.Rows.Count, colonne).End(xlUp).Offset(1, 0) = Me.ListBox1.Value & « -001 »
ws_Verif.Cells(ws_Verif.Rows.Count, colonne).End(xlUp).Offset(-1, 0) = Date2
End If

Cela évitera le blocage suite à la donnée recherchée numéro1 inexistante mais n’alimentera pas malgré tout l’onglet

Pour cela il faut rajouter cette donnée car

Onglet « Verif_M1 » 001 ne figure pas en ligne 1 :

La raison donc de ton fonctionnement

Merci pour la réponse.
le problème c’est que le 001 dans la feuille Verif_Mx a chaque fois il se supprime tout seul quand je rajoute une lame et la valeur est remplacée par le 44022;
J’ai rajouté le On Error Resume next , la donnée se met en dernière colonne

Cette ligne de code :

ws_Verif.Cells(ws_Verif.Rows.Count, colonne).End(xlUp).Offset(-1, 0) = Date2

à mettre ainsi

ws_Verif.Cells(ws_Verif.Rows.Count, colonne).End(xlUp).Offset(0, 1) = Date2

Cela devrait le faire

Dis moi

Je l’ai modifié mais rien n’a changé, toujours la lame elle se met dans la dernière colonne

au lieu de chercher le N° et la mettre dans la bonne cellule : (ici j’ai choisi 001)

Chez moi pas de souci j’en ai même inclus 2 :

Je te joins ton fichier avec mon adaptation

Testes et dis moi

TEST_L 2.xlsm (138,2 Ko)

Re,
Pour mois ca ne marche pas toujours, j’ai testé avec le fichier que tu m’as envoyé mais toujours j’ai le même problème ou la donnée se place dans la dernière colonne

Bonjour
Donnes moi de manière précise toutes les manipulations que tu effectues y compris les données utilisées qui précédent ce dysfonctionnement afin que je teste à l idenique

Dans l attente de ton retour

Bonjour,
Le schéma suivant résume mon besoin:


Dans mon fichier, dans le userfom Recherche j’ai mon code avec les commentaires/TEST_L 2.xlsm (172,6 Ko)

Moi je n’ai aucun souci donc le code est bon

Dans la barre de recherche je saisis que les 3 premiers chiffres puis je clique sur le bouton rechercher cela me ramène dans la listbox qui suit toutes les lames dont la référence débute par ses 3 premiers chiffres :

Puis je sélectionne l’une d’entre elles la première par exemple :

Puis je clique sur le bouton « Controler » une boîte de dialogue me demande de saisir la date :

Je saisi par exemple 01/01/2050 :

Puis je clique sur OK

J’obtiens bien dans la bonne colonne ma lame avec la date 01/01/2050 colonne suivante :

Aucune donnée en fin d’onglet :

La partie de code qui traite cette partie :

colonne = 0

'-------Pb ici, code ne reconnait pas numéro1
    colonne = ws_Verif.Rows("1:1").Find(What:=numéro1, After:=ws_Verif.Range("A1"), LookIn:=xlValues, LookAt:=xlWhole).Column 'Trouver la bonne colonne qui correspond au numero de la lame
    If colonne > 0 Then
    'Ajouter la lames controleé dans la feuille Verif_Mx
        ws_Verif.Activate
        ws_Verif.Cells(ws_Verif.Rows.Count, colonne).End(xlUp).Offset(1, 0) = Me.ListBox1.Value & "-001"
        ws_Verif.Cells(ws_Verif.Rows.Count, colonne).End(xlUp).Offset(0, 1) = Date2
    End If

Met d’abord la variable colonne à 0 :

colonne = 0

Puis cherche la colonne à remplir :

colonne = ws_Verif.Rows(« 1:1 »).Find(What:=numéro1, After:=ws_Verif.Range(« A1 »), LookIn:=xlValues, LookAt:=xlWhole).Column

Avec la donnée à rechercher numéro1 dans l’onglet « Verif_M1 » 1° ligne

Si celle-ci est trouvée la variable colonne récupère le numéro de la colonne :

colonne = ws_Verif.Rows(« 1:1 »).Find(What:=numéro1, After:=ws_Verif.Range(« A1 »), LookIn:=xlValues, LookAt:=xlWhole).Column

Les instructions qui suivent pour intégrer la référence de la lame et la date saisie ne peuvent s’effectuer que si la variable colonne n’est pas resté à 0 donc la colonne correspondant à la donnée recherchée portée par la variable numéro1 a été trouvée :

If colonne > 0 Then
'Ajouter la lames controleé dans la feuille Verif_Mx
ws_Verif.Cells(ws_Verif.Rows.Count, colonne).End(xlUp).Offset(1, 0) = Me.ListBox1.Value & « -001 »
ws_Verif.Cells(ws_Verif.Rows.Count, colonne).End(xlUp).Offset(0, 1) = Date2

Et ce dans l’onglet « Verif_M1 » dans la colonne que désigne la variable colonne 1° ligne libre :

ws_Verif.Cells(ws_Verif.Rows.Count, colonne).End(xlUp).Offset(1, 0)

Si aucune colonne n’est trouvée ces lignes de remplissage ne sont pas exécutées
Donc aucune mise à jour n’est effectuée dans l’onglet « Verif_M1 » et notamment en fin d’onglet

Es tu certain que la présence des données en fin est bien liée à ce traitement ?
As tu effectué ce traitement après un nettoyage de cet onglet de ces données ?

Vérifies car pour moi soit il y a intégration dans les bonnes colonnes soit aucune intégration mais certainement pas intégration en bout d’onglet dans une colonne dont la ligne 1 est vide avec ce traitement

Je ne peux pas t’en dire plus sur ce que tu obtiens car pour moi cela fonctionne

1 « J'aime »

Bonjour

J’ai apporté une petite modification dans ta dernière version transmise
Peut être pour toi du mieux
Testes et dis moi

TEST_L 2 (2).xlsm (168,0 Ko)

1 « J'aime »

Bonjour,
Pour ces 2 questions:
1/Es tu certain que la présence des données en fin est bien liée à ce traitement ?
2/As tu effectué ce traitement après un nettoyage de cet onglet de ces données ?
Réponses:
1/ Oui
2/ J’ai tout supprimé et j’ai fais un traitement mais cela n’avait rien changer

Pour le dernier fichier que tu m’as envoyé, je l’ai testé et les données se met dans les bonnes colonnes. Je ne sais pas qu’elle était le problème vu que ca fonctionnait bien pour toi et pour moi non, est ce que c’est la version Excel qui pose problème ?
En tous cas merci bcp pour ton aide et tes efforts :smiley:

Bonjour

Merci de ton retour

Pour la dernière modification que j’ai réalisé

Tu avais ceci :

    numéro1 = "001"
    colonne = 0
    
'-------Pb ici, lame se met en derniiere colonne de la 2eme feuille
    colonne = ws_Verif.Rows("1:1").Find(what:=numéro1, After:=ws_Verif.Range("A1"), LookIn:=xlValues, LookAt:=xlWhole).Column

La donnée recherchée était fixé à « 001 »

numéro1 = « 001 »

Donc c’était la seule recherchée dans l’onglet « Verif_M1 »
Toutes les lames quelque soit leur référence étaient destinées à la colonne « 001 » puisque cette donnée de recherche était figée à « 001 »

J’ai rendu cette variable dynamique en mettant en remplacement cette ligne pour la déterminer :

numéro1 = Split(Nom_Lame, « - »)(0)
colonne = 0

'-------Pb ici, lame se met en derniiere colonne de la 2eme feuille
    colonne = ws_Verif.Rows("1:1").Find(what:=numéro1, After:=ws_Verif.Range("A1"), LookIn:=xlValues, LookAt:=xlWhole).Column 

me servant du numéro de la lame sélectionnée pour en extraire la première partie par cette ligne de code :

numéro1 = Split(Nom_Lame, « - »)(0)

Ainsi toutes les lames d’être positionnée dans leur colonne appropriée

Mais je ne comprends pas ta déconvenue d’avoir celle-ci en fin de colonne après la dernière cette modification ne peut à elle seule l’expliquer
Si toutes les lames quelque soit leur référence s’étaient intégrées en colonne 001 c’était logique tel que tu avais réalisé ton code

C’est un mystère
L’essentiel malgré tout c’est que maintenant pour toi cela fonctionne
Je suis ravi

N’oublies pas de valider ma dernière réponse un petit plus agréable

A bientôt peut être

Ce sujet a été automatiquement fermé après 30 jours. Aucune réponse n’est permise dorénavant.