Microsoft 365 Récupérer les valeurs dans cellules

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 !

Electron24

XLDnaute Occasionnel
Bonsoir le Forum,

Je souhaite récupérer les valeurs des cellules dans une colonne pour les recopier dans un formulaire.
Le souci est que j'ai la formule pour récupérer les valeurs dans les lignes (Row)
VB:
If Target.Column = 2 And Target.Row > 10 And Target.Row < 1000 Then
'      If Target = "" Then
'      Exit Sub
'  Else
'    MsgBox ActiveCell.Offset(0, 6), , "Coureurs."
'End If
'    End If
Mais impossible de trouver la formule pour les colonnes.
Donc en résumé j'ai des valeurs dans les colonnes B (B3, B4, B5, B6, B7, B8, B9) - G(G3, G4, G5, G6, G7, G8, G9) - L(L3, L4, L5,L6, L7, L8, L9) etc jusqu'à FA
que je souhaite en sélectionnant la cellule ou se trouve l'année ouvrir un formulaire avec ces valeurs et l'image des étapes du tour de france correspondant à l'année sélectionnée. (pour l'image c'est fait)
Capture.JPG


Comment puis je procéder. Merci d'avance pour votr aide.
 
Solution
Bonjour tout le monde,
En PJ un essai avec :
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, Range("1:1")) Is Nothing Then
        If Target = "" Then Exit Sub                    ' si cellule vide on sort
        C = Target.Column - 1                           ' sinon récupération du N° colonne ( -1 car données en C-1 )
        With Frm_Image
            .Txt_An = Target                            ' collage année
            .Txt_Début = Cells(3, C)                    ' collage des données
            .Txt_Fin = Cells(4, C)
            .Txt_Etapes = Cells(5, C)
            .Txt_Coureurs = Cells(6, C)
            .Txt_Reste = Cells(7, C)...
Bonjour Electron,
Row pour Ligne
Column pour colonne

VB:
If Target.Column = 2 And Target.Row > 10 And Target.Row < 1000 Then
Ici vous testez si on est en colonne B ( Target.Column = 2) et en lignes comprises entre 11 et 999.
Donc si on est dans la plage B11:B999.

pour trouver la bonne colonne vous pouvez passer par :
Code:
IndexW = Application.Match(Année, Range("1:1"), 0)
Il vous renverra le N° de colonne où il a trouver Année.
Vous pourrez ensuite accéder aux cellules par un cells(ligne, IndexW) suivant vos besoins.
 
Bonjour sylvanu

Tout d'abord un grand merci pour votre collaboration.
J'ai bien compris que le code que j'ai donné est celui pour trouver des données dans une ligne. Code que j'ai tiré d'un autre classeur et que je voulais transformer pour trouver les valeurs dans une colonne mais que je n'y arrive pas.
Je ne trouve pas la Fonction IndexW cela m'indique fonction non défini.
Si vous pourriez me donner le code réel correspondant à l'image de ma feuille affiché dans mon premier post cela me serait plus compréhensible.
Le but étant de pouvoir retrouver dans le formulaire les données en A3:A9 correspondantes à l'année recherchée. (Données en B3:B9, G3:G9, L3:L9, Q3:Q9, .......)
Merci
 
Bonjour,
VB:
IndexW = Application.Match(Année, Range("1:1"), 0)
IndexW est une variable dont la valeur sera le N° de colonne.
Qu'avez vous fait pour que le VBA vous dise " fonction non définie" ?

Je ne code pas à partir d'une image, trop empirique. Donnez nous un fichier simplifié, ça évitera de multiples aller-retours. ( ainsi que le besoin exact )
 
Bonjour à tous,

Je soupçonne Electron24 d'avoir essayé :

Match = Application.IndexW(Année, Range("1:1"), 0)

(c'est peut-être le copier/coller du presse-papiers
qui a déraillé ? 😛)


@Electron24 : il est bien joli, ton cheval blanc !
avec des ailes, ça serait Pégase ! 🙂


soan
 
Bonjour tout le monde,
En PJ un essai avec :
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, Range("1:1")) Is Nothing Then
        If Target = "" Then Exit Sub                    ' si cellule vide on sort
        C = Target.Column - 1                           ' sinon récupération du N° colonne ( -1 car données en C-1 )
        With Frm_Image
            .Txt_An = Target                            ' collage année
            .Txt_Début = Cells(3, C)                    ' collage des données
            .Txt_Fin = Cells(4, C)
            .Txt_Etapes = Cells(5, C)
            .Txt_Coureurs = Cells(6, C)
            .Txt_Reste = Cells(7, C)
            .Txt_Distance = Cells(8, C)
            .Txt_Moyenne = Cells(9, C)
        End With
        DerLig = Cells(Rows.Count, C).End(xlUp).Row     ' calcul dernière ligne
        Chaine = ""
        For i = 30 To DerLig
            If Left(Cells(i, C), 5) = "Etape" Then      ' on cherche les cellules qui commencent par Etape
                Chaine = Chaine & Cells(i, C) & vbCrLf  ' on l'ajoute à la chaine
            End If
        Next i
        Frm_Image.TextBox1 = Chaine                     ' on transfert la chaine dans la textbox
        Frm_Image.Show                                  ' on visualise l'userform
    End If
End Sub
j'ai invalidé votre code mais l'ai laissé en place. Je ne sais pas ce que vous voulez en faire.
 

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

Discussions similaires

  • Question Question
Microsoft 365 Export données
Réponses
4
Affichages
649
Réponses
2
Affichages
1 K
Retour