Question sur optimisation syntaxe code VBA

Vorens

XLDnaute Occasionnel
Bonjour,


J'ai écrit quelque ligne de code me permettant de connaître l'adresse d'une colonne en fonction d'une recherche sur une autre colonne. Cela est fonctionnel mais je me demande si il n'y a pas moyen de l'écrire de façon à éviter le .activate de la feuille.

le code:

Code:
 Set PositionClasseImport = Workbooks(FichierMaintenance).Sheets("Attributes List").Rows(2).Cells.Find(what:=ClasseImport, lookat:=xlWhole)
            AdresseColImport = Split(PositionClasseImport.Address, "$")(1)
            
            Workbooks(FichierMaintenance).Sheets("Attributes List").Activate
            
            Workbooks(FichierMaintenance).Sheets("Attributes List").Range( AdresseColImport & "2").Select
            
            ActiveCell.offset(0, 2).Cells.Select
            
            'Adresse de la colonne contenant la classe et nombre max de ligne
        
            AdresseColImport = Split(ActiveCell.Address, "$")(1)


J'ai plusieurs tableau les 1 a coté des autres d'ou la recherche sur la ligne 2 de l'information afin de connaître quel tableau m’intéresse en fonction de l'adresse de la colonne. L'information que je souhaite récupérer est toujours 2 colonne plus loin que ma recherche.

Exemple: la recherche me donne la colonne F2 comme résultat. je désire connaitre la valeur de la colonne G2

Meme chose pour B2 je désire connaître D2 etc etc

Le code n'est pas dans le classeur ou est effectué la recherche d'ou la spécification du workbooks chaque fois.

En pièce jointe un fichier avec le code qui fonctionne. Recherche en C8, clic bouton et résultat en D8. Si quelque à une idée pour arriver au même résultat mais avec un code plus optimal se serais très cool de votre part de m'aider.

Meilleures salutations

Vorens
 

Pièces jointes

  • Exemple_Opti.xlsm
    16.7 KB · Affichages: 40

Gorfael

XLDnaute Barbatruc
Re : Question sur optimisation syntaxe code VBA

Salut Vorens et le forum
Pas tout compris, et comme je n'ai que la version 2003 et que la conversion apporte son lot d'erreurs...
Code:
AdresseColImport = Workbooks(FichierMaintenance).Sheets("Attributes List").Rows(2).Cells.Find(what:=ClasseImport, lookat:=xlWhole).column +2
La variable AdresseColImport est égale au numéro de la colonne, décalée de 2 vers la droite, où se situe le résultat de la recherche de ClasseImport (cellule complête) dans la ligne 2 de la feuille "Attributes List" du classeur nommé dans la variable FichierMaintenance.
A+
 

Si...

XLDnaute Barbatruc
Re : Question sur optimisation syntaxe code VBA

Salut

à essayer Si... recherche fructueuse :
Code:
 With Workbooks(FichierMaintenance).Sheets("Attributes List")
    ClasseImport = .[C8]
    Set PositionClasseImport = .Rows(2).Find(ClasseImport, lookat:=xlWhole)
    .[D8] = Split(PositionClasseImport.Offset(, 2).Address, "$")(1)
 End With
 

Vorens

XLDnaute Occasionnel
Re : Question sur optimisation syntaxe code VBA

Bonjour Gorfael,


Merci pour cette proposition des plus intéressantes. Elle répond en effet a une partie de mon problème. De part le résultat obtenu je désire copier un range. Le problème est que ta proposition me donne le numéro de colonne et je désire en connaitre la lettre afin de pouvoir créer la sélection de mon range.

Code:
             AdresseCol = Workbooks(FichierMaintenance).Sheets("Attributes List").Rows(2).Cells.Find(what:=TableauClasse(L), lookat:=xlWhole).Column + 2
            
            'Adresse de la colonne contenant la classe et nombre max de ligne
        
            AdresseCol2 = Split(AdresseCol.Address, "$")(1)
            NbElemCLasse = Workbooks(FichierMaintenance).Sheets("Attributes List").Range(AdresseColImport & "65535").End(xlUp).Row - 1
            
            Workbooks(FichierMaintenance).Sheets("Attributes List").Range(AdresseCol & "2" & ":" & AdresseCol & NbElemCLasse).Copy

Le problème est que je ne sais pas comment obtenir le même résultat avec le num de colonne et non sont adresse par la lettre. Précédemment je récupérer la lettre de la colonne par le split sur sont adresse.

Ma question à présent est double:

1) Peut-on sélectionner un range en partant du num de colonne et du num de ligne
2) Peut-on modifier ta proposition de façon à obtenir en résultat l'adresse de la colonne par sa lettre (exemple: C) et non pas son numéro ?


Par avance merci.

Meilleures salutations


Vorens
 

Vorens

XLDnaute Occasionnel
Re : Question sur optimisation syntaxe code VBA

Re,


J'avais pas vu ta réponse Si... et elle correspond parfaitement à ce que je recherche. Un grand merci à toi aisni qu'a Gorf pour le temps passer sur mon problème.

Problème résolu !

Encore merci et passez une bonne journée !

Cordialement

Vorens
 

Discussions similaires

  • Question
Microsoft 365 Code VBA
Réponses
10
Affichages
704
Réponses
2
Affichages
312

Statistiques des forums

Discussions
314 651
Messages
2 111 554
Membres
111 200
dernier inscrit
Ralfidu02