Problème recherche référence vba (double cliquer)
Fermé
JeanPhi71000
Messages postés
2
Date d'inscription
jeudi 7 décembre 2017
Statut
Membre
Dernière intervention
11 décembre 2017
-
Modifié le 7 déc. 2017 à 15:25
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 - 11 déc. 2017 à 14:54
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 - 11 déc. 2017 à 14:54
A voir également:
- Problème recherche référence vba (double cliquer)
- Double ecran - Guide
- Whatsapp double sim - Guide
- Reference pto - Accueil - Box & Connexion Internet
- Recherche automatique des chaînes ne fonctionne pas - Guide
- Évariste souhaite télécharger le logiciel inkscape depuis le site de son éditeur. sélectionnez le résultat de recherche sur lequel il doit cliquer. - Forum Bugs et suggestions
1 réponse
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 779
9 déc. 2017 à 11:06
9 déc. 2017 à 11:06
Bonjour,
J'ai pas tout compris (en particulier le contenu de la feuille outils),
mais il faut absolument éviter les Select inutiles.
Peut-être :
J'ai pas tout compris (en particulier le contenu de la feuille outils),
mais il faut absolument éviter les Select inutiles.
Peut-être :
Option Explicit Sub Test() Dim L1 As Range Dim L2 As Range Dim C1 As Range Dim C2 As Range 'Définition des références étudiées (L1) With Sheets("CopierIci") Set L1 = .Range(.Range("B2"), .Range("B2").End(xlDown)) End With 'Définition de la liste contenant les informations (L2) With Sheets("InfosDAM") Set L2 = .Range(.Range("A1"), .Range("A1").End(xlDown)) End With 'On travaille sur la feuille outil With Sheets("FeuilleOutil") 'Effacer les anciennes valeurs .Columns("A:B").Clear 'Pour chaque élément étudié (de L1) For Each C1 In L1.Cells ' On reporte la référence sur la feuille outils ... .Cells(C1.Row, "A").Value = C1.Value For Each C2 In L2.Cells If C1.Value2 = C2.Value Then '... et on note la ligne ou elle se trouve dans L2 .Cells(C1.Row, "B").Value = C2.Row End If Next C2 With .Cells(C1.Row, "B") '... si pas trouvée If .Formula = "" Then .Value = "non" End With Next C1 End With End Sub
11 déc. 2017 à 09:49
Tout d'abord merci pour votre réponse rapide, utile et qui améliore grandement mon code et mes connaissances VBA.
Cependant, le problème persiste toujours : certaines références qui sont bien dans la liste L2, c'est-a dire dans la feuille "infoDAM", ne sont pas "reconnu".
Ce problème disparait si je double clique ou j'appuie sur entrée sur les références individuellement de la liste "infoDAM". Je pense donc que le problème vient de la connexion des données, c'est comme si certaines données n'étaient pas activées...
voici ci-joint le fichier en question mais il manque le fichier de données que je ne peut pas transmettre :
https://www.fichier-xls.fr/notfound.php
Cordialement,
11 déc. 2017 à 14:54
Le problème vient du fait que les cellules ne contiennent pas la même chose, dans infoDAM les références sont toutes des textes mais dans CopierIci certaines sont des textes et d'autres des nombres (Par exemple 372851 est un nombre dans CopierIci et un texte dans InfoDAM).
Une astuce pour différencier rapidement les nombres des textes consiste à regarder comment est alignée la valeur dans la cellule (en absence d'alignement horizontal spécifique, c'est à dire en standard, ni droite, ni gauche, ni centré, ni ... ). Les textes sont à gauche, les nombres à droite, les booléen et les erreurs sont centrés et en majuscules.
Tu vois immédiatement que dans InfoDAM 372851 est à gauche et dans CopierIci il est à droite
C'est un des "défauts" d'Excel : lorsqu'on saisit quelque chose, chaque fois qu'il peut l'interpréter comme un nombre (entier, décimal, date, monnaie, ...), il le transforme automatiquement en valeur numérique correspondante. C'est ce qui se passe lorsque tu ressaisis la même valeur dans InfoDAM. Par contre lors d'un import ou d'un copier/coller il ne modifie pas les valeurs.
Je suppose que les infos InfoDAM proviennent d'une base de données extérieure, c'est pour ça (et c'est normal) qu'elles sont toutes au format texte. Pour éviter cette transformation (dans infoDAM) , il faut au préalable définir la plage concernée au format Texte, pour qu'il reste sous forme de texte en cas de ressaisie.
C'est sur la feuille CopierIci que les données ne correspondent pas à celles de InfoDAM (372851 est un nombre au lieu d'être un texte).
Une solution consiste donc simplement à définir la colonne B de CopierIci au format texte et a ressaisir tous les nombres (il seront alors considérés comme du texte).
Une autre des solutions consiste à remplacer le test, pour comparer indifféremment les nombres et les textes.
Au lieu de :
Mettre :
Avec cette solution, pas besoin de modifier les formats.
Cdlt
Patrice