Sélectionner données d'une colonne suivant son intitulé

  • Initiateur de la discussion Initiateur de la discussion nanalachieuse
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

N

nanalachieuse

Guest
Bonjour!

J'essaie de faire une macro en VBA permettant, de trouver un colonne suivant son intitulé et ainsi sélectionner son contenu (par exemple en faire la somme ou autre)
Pour le moment, j'ai réussi à sélectionner le nom d'une colonne par rapport à son nom mais ensuite la macro sélectionne seulement une cellule de la colonne et non la colonne dans son intégralité.

Merci d'avance pour votre aide !

voici la macro (sachant que ida est le nom de la colonne recherchée)

Sub Findida()
Dim strAddress As String
On Error Resume Next
strAddress = Rows("1:1").Find(what:="ida", After:=Cells(1, 1), _
LookIn:=xlValues, lookat:=xlWhole, SearchOrder:=xlByColumns, _
SearchDirection:=xlNext, MatchCase:=True)(5, 1).Address

If strAddress <> vbNullString Then
MsgBox "The address of the corresponding cell " _
& "for 'ida' 6 rows down from row 1 is " & strAddress & "." _
& "It has the value of " & Range(strAddress)
Else
MsgBox "ida found in row 1"
End If

On Error GoTo 0
End Sub
 
Re : Sélectionner données d'une colonne suivant son intitulé

Hello,

My english is not good. very not good même.

enfin j'ai enlevé la gestion d"erreur qui pour le coup ne sert à rien.

Le code à été légérement revu.

Lorsque l"on veut faire trop compact, cela pose quelque fois des problème .

Voici ma solution . n'ayant pas le contexte réel , il faudra peut être adapter.

A copier dans un module standard . déclenché soit par un événementiel ou un appui bouton .

Code:
Sub Findida()

Dim Trouve As Range
Dim strAddress As String
Dim Colonne As String
Dim Start  As String
Set Trouve = Rows("1:1").Find(what:="ida", LookIn:=xlValues, lookat:=xlWhole, SearchOrder:=xlByColumns, _
SearchDirection:=xlNext, MatchCase:=True)

If Not Trouve Is Nothing Then
  strAddress = Trouve.Address
  Colonne = Split(strAddress, "$")(1)
  Start = Range(strAddress).Offset(1, 0).Address
  MsgBox "The address of the corresponding cell " _
   & "for 'ida' values start in " & Start & "." _
   & "number values " & Range(Colonne & Rows.Count).End(xlUp).Row - 1
 Else
  MsgBox "ida not found in row 1"
End If

End Sub
 
Re : Sélectionner données d'une colonne suivant son intitulé

Bonjour à tous,

Autre façon :
Code:
Sub Findida()
    Dim plage As Range, nblig As Long
    Set plage = Rows(1).Find(what:="ida", LookIn:=xlValues, lookat:=xlWhole)
    If Not plage Is Nothing And nblig > 1 Then
        nblig = Cells(Rows.Count, plage.Column).End(xlUp).Row
        Set plage = plage.Offset(1, 0).Resize(nblig - 1, 1)
        plage.Select: MsgBox ("plage sélectionnée : " & plage.Address)
    Else
        MsgBox "ida non trouvé ou données absentes"
    End If
End Sub

eric
 
Dernière édition:
Re : Sélectionner données d'une colonne suivant son intitulé

Bonjour nanalachieuse,

Un essai pour illustrer la demande:
VB:
Sub Findida()
Dim FoundCell As Range, MyColumn As Range
Dim MyData As Range, Aux As Range

Set FoundCell = Rows("1:1").Find(what:="ida", After:=Cells(1, 1), _
LookIn:=xlValues, lookat:=xlWhole, SearchOrder:=xlByColumns, _
SearchDirection:=xlNext, MatchCase:=True)

If FoundCell Is Nothing Then
  MsgBox "ida not found in row 1"
Else
  ' 6 rows down from row 1 ...==> row seven !
  Set FoundCell = FoundCell.Offset(6, 0)
  MsgBox " The address of the corresponding cell " _
  & "for 'ida' 6 rows down from row 1 is " & FoundCell.Address & "." _
  & " It has the value of " & FoundCell.Value

  'range of the entire column
  Set MyColumn = FoundCell.EntireColumn
  MsgBox " The address of the corresponding column is :  " & MyColumn.Address
    
  'range from row 2 to the last non empty cell within the above column
  Set Aux = Cells(Rows.Count, FoundCell.Column).End(xlUp)
  Set MyData = Range(Cells(2, FoundCell.Column), Aux)
    MsgBox " The address of the data range is : " & MyData.Address
End If
End Sub
 
Re : Sélectionner données d'une colonne suivant son intitulé

Re, je suis désolé mais aucune de vos réponses ne correspond à ce que je veux faire! j'ai les messages suivants:

çamarchepas: the address of the corresponding cell for ida values start in $C$2.number values 4 (mais je n'ai aucun 4 dans cette colonne)

Eriiic: Ida non trouvé ou données absentes

mapomme: "first message" :the address of the corresponding cell for ida 6 rows down from row 1 is $C7$ it has the value of (and nothing)
"second message": the address of the corresponding column is $C:$C
"third message": the address of the corresponding range is $C2:$C$5

Vous pourrez trouver mon ficher en pièce jointe.

Je souhaite donc quand j'appuie sur le bouton que la macro trouve la colonne nommée "ida" et fasse la somme des valeurs de cette colonne!

Merci encore pour votre aide !
 

Pièces jointes

Re : Sélectionner données d'une colonne suivant son intitulé

Bonjour,

Ta demande était de sélectionner, normal que l'on ne faisait pas la somme.
Les messages étaient là pour renseigner, comme sur ton exemple de code...
Par exemple çamarchepas te dit que tu as 4 données, pas que tu as un 4 quelque part...

Pour ma part une correction (mal) faite à la dernière minute était la cause de l'erreur.

Code corrigé et compléter par ta dernière demande :
Code:
Sub Findida()
    Dim plage As Range, nblig As Long
    Set plage = Rows(1).Find(what:="ida", LookIn:=xlValues, lookat:=xlWhole)
    If Not plage Is Nothing Then
        nblig = Cells(Rows.Count, plage.Column).End(xlUp).Row
        If nblig > 1 Then
            MsgBox ("Total : " & WorksheetFunction.Sum(plage.Offset(1, 0).Resize(nblig - 1, 1)))
        Else
            MsgBox ("Pas de données")
        End If
    Else
        MsgBox "ida non trouvé"
    End If
End Sub
eric
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

S
Réponses
13
Affichages
2 K
Stedemart
S
S
Réponses
9
Affichages
2 K
Retour