[VBA] Selection d'une plage de cellules avec Adresse

FéFéClochette

XLDnaute Nouveau
Bonjour à tous,

Je souhaiterai qu'une macro sélectionne une plage de données après avoir identifié l'adresse des colonnes utiles. Mais je n'arrive pas à trouver la fonction ou alors je n'utilise pas les bons paramètres.

Cela cafouille à la fin au niveau de "Cell.Column("AdresseHATrouvee:AdresseVPTrouvee").Select"
Mais je n'arrive pas à trouver la bonne formulation.

D'autre part, sachant que ces adresses sont les entêtes de colonnes, je voudrais que la macro fasse la sélection directement en ligne 2.

--------------------------------------------------------------------------------------------------------------------------------

Dim ColpxHA As Range
Dim ColpxVente As Range,PlageDeRecherche As Range
Dim PrixHA As String, AdresseHATrouvee As String
Dim PrixVP As String, AdresseVPTrouvee As String


PrixHA = "Prix d'achat"
Set PlageDeRecherche = ActiveSheet.Rows(1)
'*******************************
Set ColpxHA = PlageDeRecherche.Cells.Find(what:=PrixHA, LookAt:=xlWhole)
If ColpxHA Is Nothing Then
AdresseHATrouvee = " La colonne Prix d'achat n'est pas présente dans la feuille"
Else
AdresseHATrouvee = ColpxHA.Address
ColpxHAOk = True
NoCellPxHa = i
End If


PrixVP = "Prix conseillé"
Set PlageDeRecherche = ActiveSheet.Rows(1)
'*******************************
Set ColpxVente = PlageDeRecherche.Cells.Find(what:=PrixVP, LookAt:=xlWhole)
If ColpxVente Is Nothing Then
AdresseVPTrouvee = " La colonne Prix conseillé n'est pas présente dans la feuille"
Else
AdresseVPTrouvee = ColpxVente.Address
ColpxVenteOk = True
End If



Cell.Column("AdresseHATrouvee:AdresseVPTrouvee").Select
Range(Selection, Selection.End(xlDown)).Select
For Each Cell In Selection

--------------------------------------------------------------------------------------------------------------------------------

Cette macro traitait tout le temps les même colonnes mais dorénavant, les colonnes pouvant bouger, je la modifie en allant chercher les adresses des colonnes utiles. Mais pas facile à réadapter :/

Il faudra ensuite que je modifie la formulation précédent le traitement mais ça c'est une autre paire de manche :)

--------------------------------------------------------------------------------------------------------------------------------
For i = 2 To NbRows

nb1 = ActiveSheet.Cells(i, 25)
nb2 = ActiveSheet.Cells(i, 26)
--------------------------------------------------------------------------------------------------------------------------------

Merci beaucoup pour votre aide. Les explications sont longues mais j'espère qu'elles seront compréhensibles !
Bonne journée Le forum
 

Robert

XLDnaute Barbatruc
Repose en paix
Bonjour Féfé, bonjour le forum,

D'abord ce n'est pas trop cohérent car si une ou les deux valeurs ne sont pas trouvées tu ne pourras pas sélectionner. Ton code ne prévoit pas cela => plantage...
Puis, ce n'est pas très clair la plage que tu veux sélectionner... Peut-être comme ça :

VB:
Dim COLS As Range

Set COLS = Application.Intersect(ActiveSheet.Columns(AdresseHATrouvee.Column), ActiveSheet.Columns(AdresseVPTrouvee.Column))
Set COLS = Application.Intersect(ActiveSheet.UsedRange, COLS)
COLS.Select
 

youky(BJ)

XLDnaute Barbatruc
Bonjour à tous et toutes,
Pour un début je verrais bien comme ceci
Bruno
VB:
'col renvoie le N? de colonne
col = Application.Match("Prix d'achat", Rows(1), 0)
If Not IsNumeric(col) Then MsgBox "Non trouvé PrixAchat"
col2 = Application.Match("Prix conseillé", Rows(1), 0)
If Not IsNumeric(col) Then MsgBox "Non trouvé PrixConseillé"
 

Discussions similaires

Réponses
2
Affichages
233
Réponses
2
Affichages
147

Statistiques des forums

Discussions
312 201
Messages
2 086 174
Membres
103 152
dernier inscrit
Karibu