Verification d'une affectation

Newbe

XLDnaute Nouveau
Bonjour à tous,
j'ai un petit soucis dans une macro qui ne devrait pas vous prendre plus de 3 minutes à résoudre.
Je dois affecter à une variable x un entier qui représente la colonne d'une cellule elle même résultat d'une recherche. Jusque là tout va bien.
Ensuite je cherche à vérifier que l'affectation a bien été réalisée avant de continuer (pour être sur que la recherche a aboutit) et là je ne sais pas trop comment faire.
J'ai essayé:
If Not x is Nothing (ou Null)
Mais il m'annonce que le type de x n'est pas adapté à la formulation...

Si quelqu'un a une idée...
 

Gorfael

XLDnaute Barbatruc
Re : Verification d'une affectation

Salut Newbe et le forum
Si tu as déclaré X en nombre (entier, long ou double) il suffit de vérifier qu"il est différent de 0
Si tu as déclaré X en range, tu peut le comparer à nothing

Plus tu donnes moins de détails, moins tu as plus d'aide
A+
 

Modeste

XLDnaute Barbatruc
Re : Verification d'une affectation

Bonjour Newbe,

J'ai bien une idée, en effet ... ce serait que tu nous donnes une idée du code qui précède: comment fais-tu la recherche? Ca ne doit pas être avec Find, sinon, je présume que ta variable serait de type Range, plutôt qu'un entier. Dès lors, comment pourrions-nous imaginer ce qui pose problème et plus encore, proposer une autre syntaxe?

Edit: Salut Gorfael
 

Newbe

XLDnaute Nouveau
Re : Verification d'une affectation

Ha oui désolé c'est vrai que j'ai pas été très précis...
Alors voici le debut de mon code:



Option Explicit
Option Base 1



Function recherche(donnée As string) As integer
Dim x As Variant
Dim i As integer

x= [A1:Z1].Find(What:=donnée, lookIn:=xlformula, LookAt:=xlPart, SearchOrder:=xlByColumns).Adress

recherche = Range(x).Column

End Function





Sub Tableau()

Dim A As String
Dim i As integer, x As integer
Dim Chemin As Variant, fs As Variant
Dim nomfichier As String, Fichierlu As String, Fenêtrelu As String

chemin = ThisWorkbook.Path & "\Données\"
nomfichier = ActiveWorkbook.Name

Set fs = Application.FileSearch
With fs
.LookIn = chemin
If .Execute(SortBy:=msoSortByFileName, SortOrder:=msoSortOrderAscending) > 0 Then

For i = 1 To .FoundFiles.Count
fichierlu = .FoundFiles(i)
fenêtrelue = ActiveWorkbook.Name

A='ISIN'
x=recherche(A)

If Not x is Null then



Voilà ça ressemble à ça... La Macro doit parcourir un dossier et me chercher la colonne ISIN dans chaque feuille Excel du dossier.

Si vous avez besoin d'autres précisions... :)
 

Modeste

XLDnaute Barbatruc
Re : Verification d'une affectation

re-bonjour,

en modifiant les deux instructions de ta fonction:
Code:
[B][COLOR="DarkRed"]Set[/COLOR][/B] x = [A1:Z1].Find(What:=donnée, lookIn:=xlformula, LookAt:=xlPart, SearchOrder:=xlByColumns).
if not x is nothing then recherche = x.Column
... ça fonctionne mieux, chez moi
x devient une variable de type Range

PS: Address prend 2 'd' ... mais n'est pas nécessaire ici
 

YANN-56

XLDnaute Barbatruc
Re : Verification d'une affectation

Bonjour à vous et à ceux qui passeront par là.

Voilà ça ressemble à ça... La Macro doit parcourir un dossier et me chercher la colonne ISIN dans chaque feuille Excel du dossier.

En fait tu fouilles dans un "Classeur" (Et non un "Dossier").

Si ton entête de colonne se trouve toujours sur la même ligne,
ou qu'elle est la seule à porter ce nom; il y a bien plus simple.
(Sinon; effectivement... "Find")

A noter que la ".value" d'une cellule se réfère sa formule,
alors que le ".Text" à son résultat… (Ceci dit pour la suite éventuelle).

A te lire si …

Amicalement.

Yann
 

Newbe

XLDnaute Nouveau
Re : Verification d'une affectation

En fait je parcours tous les fichiers excel du dossier donnée et ces fichiers contiennent des informations mais ne sont pas formatés de la même manière...
Il y a toujours une unique colonne ISIN mais elle n'est pas toujours à la même position.
Donc selon toi je pourrais faire plus simple pour trouver ma colonne?
 

Modeste

XLDnaute Barbatruc
Re : Verification d'une affectation

re-bonjour ... et bonsoir,

Je m'étais intéressé au premier 'x' (celui de la fonction).
En lisant les remarques de YANN-56, je suis allé voir plus loin, c'est-à-dire la dernière ligne du code fourni!
J'ai essayé de conserver au maximum le code déjà produit (même, si sans doute, je ne m'y serais pas pris de la même manière ... Je précise tout de suite: je n'ai pas dit que j'aurais fait mieux! Quand Yann dit qu'il y a bien plus simple que Find, j'espère qu'il nous laissera un indice supplémentaire, s'il repasse par ici)
Dans chaque fichier, j'ai fait la recherche dans la première feuille (pas d'autre indication fournie?)
Pour le reste, j'ai reconstitué un environnement similaire à ce que j'ai compris (cette fois-ci) pour tester. Ca semble fonctionner sous xl2000.
 

Pièces jointes

  • Centralisateur.xls
    30.5 KB · Affichages: 62

Newbe

XLDnaute Nouveau
Re : Verification d'une affectation

J'ai simplement une question Modeste, tu dois surement avoir la réponse:
La macro tourne parfaitement sous 2003 mais en excel 2007 j'ai un message erreur 445 me disant que application.fileSearch ne gère pas les actions suivantes.
Tu penses qu'il y a moyen de faire un truc qui fonctionne sur les 2 versions?
 

Discussions similaires

Statistiques des forums

Discussions
312 799
Messages
2 092 241
Membres
105 300
dernier inscrit
DJSONO