Rechercher tois valeurs et verifier si elles sont sur la même ligne

zephir94

XLDnaute Impliqué
Bonjour le forum,

Je dois avant de récupérer trois valeurs d'un Userform vérifier si elles n'ont pas étaient déjà enregistrées dans une base.
Voici mon code :
Code:
 Set Cell = Sheets("base2").Columns(2).Find(TextBox1, LookIn:=xlValues, lookat:=xlWhole)
 Set Cell = Sheets("base2").Columns(1).Find(TextBox2.Value, LookIn:=xlValues, lookat:=xlWhole)
Set Cell = Sheets("base2").Columns(3).Find(ComboBox1, LookIn:=xlValues, lookat:=xlWhole)

If TextBox1 = Find & TextBox2 = Find & ComboBox1 = Find  ( sur la même ligne ) Then
MsgBox "vous avez déjà enregistré cette formation !", vbExclamation, "Service formation"
Exit Sub

Je trouve bien les valeurs mais je voudrais vérifier qu'elles soient sur la même ligne, car si elles sont sur la même ligne dans ce cas j'interdis l'archivage ou j'archive

Merci à vous tous
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : Rechercher tois valeurs et verifier si elles sont sur la même ligne

En attendant en première lecture de ton code j'ai du mal à comprendre le cells resize,

Cells(1, 1) c'est la 1ère cellule en colonne A.

Avec .Resize(n) on définit une plage de hauteur n à partir de cette cellule.

Il faut au moins 2 lignes de hauteur pour que le calcul matriciel fonctionne.

A+
 

zephir94

XLDnaute Impliqué
Re : Rechercher tois valeurs et verifier si elles sont sur la même ligne

Ok un grand merci pour ces explications très instructives,
Tu vas me dire que je ne suis pas le roi du copier coller ( mode humour ! ) mais hélas pour moi ça fonctionne pas malgré un bon repérage des valeurs en pas à pas la macro saute la msgbox car la condition si les valeurs recherchées sont sur une même ligne est en false !
 

job75

XLDnaute Barbatruc
Re : Rechercher tois valeurs et verifier si elles sont sur la même ligne

Re,

Pas de doute : si la ligne n'est pas trouvée c'est qu'il n'y a pas les mêmes valeurs dans l'UserForm et dans la feuille.

Erreur classique : des espaces superflus dans les textes (en général à la fin).

Ou bien aussi des espaces insécables de code 160 dans la feuille.

A+
 

zephir94

XLDnaute Impliqué
Re : Rechercher tois valeurs et verifier si elles sont sur la même ligne

Re bonjour,

Après un nouveau test pas à pas et réduction à deux colonnes B et C

ici :

Code:
   .Cells(1, 2).Resize(.Rows.Count + 1).Name = "colB"
   .Cells(1, 3).Resize(.Rows.Count + 1).Name = "colC"

il me trouve bien la même ligne soit rows 4 mais

la ligne :

Code:
 If IsNumeric([MATCH(x,colB&s&colC,0)]) Then 'calcul matriciel

Code:
x,colB&s&colC,0)]
j'ai o=o

J'ai donc testé avec comme valeur A et B pour voir l'histoire des espaces et c'est pareil

et il passe directement à End if

Une idée ?
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : Rechercher tois valeurs et verifier si elles sont sur la même ligne

Re,

Pour ce qui est des espaces superflus, il est facile de les supprimer avec la macro.

Par la méthode du post #13 :

Code:
If TextBox1 = "" Or TextBox2 = "" Or ComboBox1 = "" Then Exit Sub
ThisWorkbook.Names.Add "s", Chr(1)
ThisWorkbook.Names.Add "x", Application.Trim(TextBox2) & [s] & _
Application.Trim(TextBox1) & [s] & Application.Trim(ComboBox1)
With Intersect(Sheets("base2").[A:C], Sheets("base2").UsedRange.EntireRow)
  .Cells(1, 1).Resize(.Rows.Count + 1).Name = "colA" 'au moins 2 lignes
  .Cells(1, 2).Resize(.Rows.Count + 1).Name = "colB"
  .Cells(1, 3).Resize(.Rows.Count + 1).Name = "colC"
End With
If IsNumeric([MATCH(x,TRIM(colA)&s&TRIM(colB)&s&TRIM(colC),0)]) Then 'calcul matriciel
  MsgBox "Cette formation existe déjà !", 48, "Service formation"
  Exit Sub
End If
'suite du code
Application.Trim c'est la fonction SUPPRESPACE.

Concernant les caractères de code 160 le plus simple est d'opérer manuellement :

- sélectionnez les colonnes A:C

- touches Ctrl+H

- dans "Rechercher", touche Alt enfoncée, tapez 0160

- dans "Remplacer par", entrez un espace.

A+
 

Si...

XLDnaute Barbatruc
Re : Rechercher tois valeurs et verifier si elles sont sur la même ligne

salut

avec un enchaiment de "Find" (comme à la première demande), peut être ainsi

Ne te gondole pas Job, je sais, ma proposition ne tient pas la route (le canal devrais-je dire) :eek:
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : Rechercher tois valeurs et verifier si elles sont sur la même ligne

Re,

De toute façon vous auriez dû depuis longtemps déposer votre fichier sur le fil.

Allégé mais avec la ligne "qui ne marche pas" (ligne 4 d'après ce que je comprends).

A+
 

job75

XLDnaute Barbatruc
Re : Rechercher tois valeurs et verifier si elles sont sur la même ligne

Re,

Qu'il y ait des lignes doublons n'a aucune importance.

Faut vous remuer parce que dimanche je serai à Venise.

Alors bis repetita, joignez votre fichier.

A+
 

Discussions similaires

Statistiques des forums

Discussions
311 720
Messages
2 081 926
Membres
101 842
dernier inscrit
seb0390