Recherche V en VB

Résolu
Pgueret Messages postés 10 Date d'inscription jeudi 17 janvier 2008 Statut Membre Dernière intervention 21 janvier 2008 - 17 janv. 2008 à 19:46
Pgueret Messages postés 10 Date d'inscription jeudi 17 janvier 2008 Statut Membre Dernière intervention 21 janvier 2008 - 21 janv. 2008 à 18:09
Bonsoir,

Je suis amateur, en programmation Vb sous Excel..

Déjà une question, est ce que mettre les formules tel que "RechercheV" en VB est un gain de place par rapport à Excel?

Là, je suis en train de tester une formule mais Erreur 438? qu'est ce que c'est voici mon mini code ;)

Sub testTest()
'
' test3 Macro
' Macro enregistrée le 17/01/2008 par Gueret
'

'
    Range("C9") = Application.WorksheetFunction.VLookup([A6] & [C4] & [B9] & [E5], Feuil2![I:J], 2, "FALSE")
 
End Sub

Voici, merci de vos réponses.

19 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
17 janv. 2008 à 20:51
Salut
Cool ! Une première question avec la bonne catégorie. Bel effort (ça devient rare).

Erreur 438 : "Propriété ou méthode non gérée par cet objet" (c'est important de taper le descro de l'erreur )
Bien que cette macro ait été enregistrée, tu y as fait des modifs, surement.
Je pense (ma boule de cristal V2.0 et moi), que la syntaxe   ([A6] & [C4] & [B9] & [E5],    n'est pas correcte.
Essaye éventuellement   ([A6][C4][B9][E5],    car il s'agit là de références à des cellules, pas des textes classiques
Je ne pense pas qu'on ait le droit de fournir des Range de cellules qui sont disjointes.
(36 sec plus tard)
Et puis VLookUp : Fonction inconnue sous Excel 2003 ...

Quelle version de Excel utilises-tu ?
As-tu des renseignements sur cette fonction ?

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
3
Pgueret Messages postés 10 Date d'inscription jeudi 17 janvier 2008 Statut Membre Dernière intervention 21 janvier 2008
17 janv. 2008 à 21:06
Alors oui, c'est exact j'ai repris cette formule sur un forum...
j'explique, j'ai conçu un fichier excel qui pése 90 Mo..
 C'est dû au recherchev sous excel et je voulais la transformer en vb si cela pese moins lourds...

ma recherchev sous Excel donc (Ver. 2003) :
=recherchev(A5&C4&B9&E5;Feuil!A:E;3;0) bref...

Alors qu'est ce que je peux faire? et je rappelle je suis amateur.

Merci d'avance..
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
17 janv. 2008 à 22:26
Essaie ceci

Range("C9").Formula = "=VLOOKUP(A5&C4&B9&E5,Feuil!A:E,3,FALSE)"

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
0
Pgueret Messages postés 10 Date d'inscription jeudi 17 janvier 2008 Statut Membre Dernière intervention 21 janvier 2008
17 janv. 2008 à 22:38
Merci, mais quelques questions?
- Comment faire pour que cette recherche V s'effectue o démarrage du fichier?
-Est - ce possible d'ecrire cette formule Sous visual Basic, mais qu'elle ne s'affiche pas sur Excel?
pour un gain de place
J'espere être assez claire, merci de vos réponses.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
17 janv. 2008 à 22:50
Ce que je t'ai donné, c'est pour inscrire une formule dans une cellule. Si tu veux simplement faire une recherche dans le fichier sans l'inscrire physiquement, tu pourrais alors utiliser la fonction Find.

Pour créer une action à l'ouverture du programme, il faut utiliser Worksheet_Open dans ThisWorkbook

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
0
Pgueret Messages postés 10 Date d'inscription jeudi 17 janvier 2008 Statut Membre Dernière intervention 21 janvier 2008
17 janv. 2008 à 22:58
Ahhh ahh ahh!!
faire une recherche dans le fichier sans l'inscrire physiquement, tu pourrais alors utiliser la fonction Find.

Pour créer une action à l'ouverture du programme, il faut utiliser Worksheet_Open dans ThisWorkbook

Alors moi pas comprendre du tout...

Vraiment désolé.., est ce que je peux faire ma recherche V sans l'ecrire?

en format rechercheV parce que les autres en VB je connais pas du tout,

Merci de m'aider
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
17 janv. 2008 à 23:15
Il te faudra créer du code pour faire ta recherche comme ceci

    Dim Recherche As Range
    Dim Valeur As String  'Sert pour stocker la concaténation
   
    Valeur = Range("A1") & Range("B1") & Range("C1") & Range("D1")

'Recherche dans la feuille 2, colonne A, la concaténation faite en feuille 1   
    Set Recherche = Sheets("Feuil2").Columns("A").Find(Valeur, LookAt:=xlWhole)
    If Not Recherche Is Nothing Then
        MsgBox "La valeur a été trouvée en cellule: " & Recherche.Address
    Else
        MsgBox "Non trouvé"
    End If

xlWhole signifie que la valeur de la cellule est identique à celle recherchée, et non en partie.
ab fait partie de abc
Ici on cherche ab, disons, et on ne veut pas trouver abc
Si on change xlWhole pour xlPart, abc serait un réponse possible ...

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
17 janv. 2008 à 23:20
Autre méthode qui rejoint l'idée première...

    Dim Valeur As String  'Sert pour stocker la concaténation
    Dim Résultat
   
    Valeur = Range("A1") & Range("B1") & Range("C1") & Range("D1")
    Résultat = WorksheetFunction.VLookup(Valeur, _
                                         Sheets("Feuil2").Columns("A:E"), _
                                         3, False)
    MsgBox Valeur

La méthode du Find demeure tout de même quelque chose de très utile ...

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
0
Pgueret Messages postés 10 Date d'inscription jeudi 17 janvier 2008 Statut Membre Dernière intervention 21 janvier 2008
17 janv. 2008 à 23:27
Valeur = Range("A1") & Range("B1") & Range("C1") & Range("D1")
Ceci A1 et B1... etc, c'est mes cellules rechercher?

et je dois recopier ce code autant de fois que de recherche.. soit Plus de 3000..

et est ce que je peux mettre une couleur suivant la valeur trouver parce que Excel n'en dispose que 3 comment je dois faire

Merci encore.
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
17 janv. 2008 à 23:46
Là, il faudrait que tu expliques plus clairement...

À l'origine, tu avais ceci de concaténé
[A6] & [C4] & [B9] & [E5]
Donc, pour moi, aucune logique ou constance.

Si tu veux copier cette formule, c'est donc que tu ne veux pas récupérer la valeur dans une variable, mais bien l'inscrire sur la feuille (active ou non...)

Si tu veux l'inscrire sur la feuille, utilise Formula comme je t'ai indiqué au début.
Et là, tout dépend comment tu copies cette formule. Comme je ne vois aucune constance dans ta concaténation, je ne peux pas vraiment t'aider. Est-ce que tu veux utiliser toujours la même concaténation pour toutes les recherches ou tu veux que cette concaténation soit modifiée à chaque ligne ?
Je commence à détester ce mot... concaténation

Pour la couleur aussi, il faudrait que tu expliques. Il existe la mise en forme conditionnelle qui pourrait t'aider. Autrement, c'est aussi faisable sous VBA. Mais peut-être devrais-tu redémarrer un autre sujet pour cette question...

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
0
Pgueret Messages postés 10 Date d'inscription jeudi 17 janvier 2008 Statut Membre Dernière intervention 21 janvier 2008
18 janv. 2008 à 00:11
Voici ma recherche V
=recherchev(A6&C4&B9&C5;N_importe_quel_feuille!;C:D;2;0)
j'effectue cette recherche il doit me trouver soit O ou C ou P ou P-N
R01B = A6
025 = C4
00 = B9
03 C5

En faites c'est une rechercheV( pour mon taf):
Elle me recherche l'emplacement ds une carte (avec tous les emplacements) et me reporte O, C, P... est suivant cette lettre il y a une couleur.

Donc j'ai autant de formules que d'emplacements...
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
18 janv. 2008 à 00:42
OK, mais les cellules A6, C4, B9 et C5 n'ont pas de $ donc, à la ligne suivante, la recherche se fera sur A7,C5,B10 et C6, c'est ça ?
Sinon, il faudrait mettre A$6, C$4, ...

Et pour être certain que tout est clair,
Dans la feuille que tu recherches, il y a cette valeur inscrite en colonne C
R01B0250003
et ce, dans une seule cellule... c'est ça ?

Sinon, je manque encore d'info..

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
0
Pgueret Messages postés 10 Date d'inscription jeudi 17 janvier 2008 Statut Membre Dernière intervention 21 janvier 2008
20 janv. 2008 à 18:31
Bonjour,

Désolé mais ce week end pas tafé...

Enfin oui $ je sais bien les placer y a pas de soucis ;)
Maintenant c'est de refaire la meme chose mais en VBA et une possibilité de 4 ou 5 couleurs
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
20 janv. 2008 à 18:50
Pour les couleurs de fond, utilise
MonRange.Interior.Color
ou
MonRange.Interior.ColorIndex

Si c'est pour le texte,
MonRange.Font.Color ou ColorIndex

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
0
Pgueret Messages postés 10 Date d'inscription jeudi 17 janvier 2008 Statut Membre Dernière intervention 21 janvier 2008
20 janv. 2008 à 19:00
Bon bah je te remercie..
Mais c'est au dessus de mes moyens, pour re-faire un fichier tel que, celui que j'ai.
De plus le re-faire sous VBA...

Enfin rien n'est perdu : Connaissance personnel.

Merci d'avoir pris mon sujet et de m'avoir aidé..

Cordialement.
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
20 janv. 2008 à 19:14
Pour la grosseur de ton fichier (90 megs), je pense que tu pourrais simplement faire du ménage...

Il n'y sûrement pas que des formules pour le grossir comme ça.
Tu dois utiliser des couleurs et peut-être sur toute la longueur d'une colonne plutôt que seulement le Range nécessaire.

Parcours tes feuilles et regarde comment agissent les barres de défilement.
En principe, si tu descends la barre jusqu'en bas, tu dois arriver à la dernière ligne de données. Si tu arrives plus bas, c'est qu'il y a du formatage dans tes cellules vides. Même chose pour les colonnes.

Pour vider l'espace utilisé, mais non nécessaire, tu sélectionnes la première ligne vide sous les données, puis tu tapes Ctrl-Maj-Flèche bas. Une fois sélectionnées tu supprimes ces lignes, pas seulement effacer. Même chose pour les colonnes.

Si vraiment tu as des dizaines de milliers de formules, tu pourrais utiliser une ligne en haut pour stocker tes formules de base, tu les copies sur toutes les lignes nécessaires et tu les copies/colles en valeur, toujours en conservant la ligne de formules de base pour éviter de devoir se les retaper...

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
0
Pgueret Messages postés 10 Date d'inscription jeudi 17 janvier 2008 Statut Membre Dernière intervention 21 janvier 2008
20 janv. 2008 à 20:38
Merci, pour les infos.

J'ai formater toutes les cellules Supprimer, masqué...

Il y a pas mal de T.C.D. c'est cela qui "gonfle" le fichier...
Données => Formules => TCD => formules =>..

Re-faire un p'tit tour...

Encore merci.
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
21 janv. 2008 à 11:06
Une idée comme ça...
Je ne les utilise jamais, mais tu pourrais éventuellement créer tes TCD par code et n'en avoir qu'un plutôt que les créer à l'avance et en avoir toujours plusieurs qui ne servent peut-être que rarement... (?)

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
0
Pgueret Messages postés 10 Date d'inscription jeudi 17 janvier 2008 Statut Membre Dernière intervention 21 janvier 2008
21 janv. 2008 à 18:09
Bonsoir,

Mes TCD ne peuvent pas être rassemblé.. c'est une suite logique.., un trie puis formule..

Non, mais il fonctionnera, (j'espere) le jour prévu.

Je te remercie.
0
Rejoignez-nous