Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Recupérer la colonne.

  • Initiateur de la discussion Initiateur de la discussion JJ1
  • 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 !

J

JJ1

Guest
Bonjour,

Je m'excuse de ne fournir un fichier, je suis sur une e-machine.
Pour faire simple et clair (?), j'ai des nombres éparpillés et des cellules vides (par formule nb.si ; ; "") sur la ligne 1, par exemple de H1 à CA1
(peu importe le nombre de nombres et de cellules "")

Je voudrai en CB1 récupérer la colonne() du 7ème nombre à partir de la cellule H1 ?

Merci de m'aider si vous pouvez avec cette simple description.

Bon am
 
Re : Recupérer la colonne.

Bonjour,

histoire de s'amuser un peu avec la méthode "Find"... A adapter...

Code:
Option Explicit
Sub test()
Dim x As Range, a As String, i As Byte
With Range("H1:CA1")
    Set x = .Find("*", Range("CA1"), xlValues, , 2, 1, 0)
    If Not x Is Nothing Then
        a = x.Address
        For i = 1 To 6
            Set x = .FindNext(x)
            If a = x.Address Then Exit For
        Next i
        If i = 7 Then MsgBox "Valeur " & x.Value & " en colonne " & x.Column
    End If
End With
End Sub
bon après midi
@+
 
Re : Recupérer la colonne.

Bonjour

voici une fonction ferait peut être la même chose
VB:
Option Explicit
Option Base 1

Public Function trouver_n(vecteur_ligne, numero)
Dim nb, i, num, valeurs
  valeurs = vecteur_ligne.Value
  nb = UBound(valeurs, 2)
  i = 1
  num = 1
  Do While i <= nb
    If (valeurs(1, i) <> "") Then
      If num = numero Then
        trouver_n = valeurs(1, i)
        Exit Function
      End If
      num = num + 1
    End If
    i = i + 1
  Loop
End Function
 
Re : Recupérer la colonne.

Bonjour Pierrot, tbft,

Merci pour vos réponses que je vais tester ce soir ou demain matin.
Par contre, j'ai plusieurs lignes à tester et je voudrais les résultats en CA1,CA2,CA3....etc.

Que dois-je modifier dans la fonction?

Merci à vous.
 
Re : Recupérer la colonne.

Re

La fonction trouver_n fonctionne (normalement) comme une fonction d'excel.
en CA1 tu écris =trouver_n(H1:BZ1;7)
en CA2 tu écris =trouver_n(H1:BZ2;7)
en CA3 tu écris =trouver_n(H1:BZ3;7)
en CA4 tu écris =trouver_n(H1:BZ4;7)
etc....
 
Re : Recupérer la colonne.

Bonsoir JJ1,

Un exemple avec une formule matricielle en BS1 à valider par Ctrl+Maj+Entrée puis à recopier vers le bas.

La formule:
Code:
=ADRESSE(LIGNE();PETITE.VALEUR(SI(ESTNUM(A1:BR1);COLONNE(A1:BR1));7);4)

Nota: pour effacer l'erreur NOM?:
  • insérer un module
  • couper le code de la fonction du module de feuille "Feuil1" pour le coller dans le module nouvellement créé.
 

Pièces jointes

Dernière édition:
Re : Recupérer la colonne.

Rebonjour à tous,

Cette formule donne le numéro de colonne de la 7ème cellule :

Code:
=SOMMEPROD(N(SOUS.TOTAL(2;DECALER(A1;;;;COLONNE(A1:BR1)))<7))+1
Elle pèse plus lourd que la solution PETITE.VALEUR de mapomme (8 octets de plus) mais elle ne nécessite pas de validation matricielle.

Bien sûr pour obtenir la valeur de la 7ème cellule :

Code:
=INDEX(A1:BR1;SOMMEPROD(N(SOUS.TOTAL(2;DECALER(A1;;;;COLONNE(A1:BR1)))<7))+1)
A+
 
Re : Recupérer la colonne.

Bonjour à tous,
Salut les amis,

🙂 Pour être sûr d'être toujours dans la liste de notre ami JJ1, une visualisation par MeFC :



A+ à tous
 

Pièces jointes

  • Capture 1.png
    9.9 KB · Affichages: 88
  • Capture 1.png
    9.9 KB · Affichages: 87
Dernière édition:
Re : Recupérer la colonne.

Bonjour

En ce qui concerne la solution avec la fonction créer sous, il fallait mettre la fonction dans un module de classe.
Il y avait un boulette, la fonction traiter les "" et pas les " "....

Dis moi ce que tu en pense stp!!
 

Pièces jointes

Re : Recupérer la colonne.

Bonjour tbft,

Module de classe 😕

Perso je pense qu'on peut bien simplifier le code :

Code:
Function trouver_n(vecteur, numero)
For Each vecteur In vecteur
  If IsNumeric(CStr(vecteur)) Then trouver_n = trouver_n + 1
  If trouver_n = numero Then trouver_n = vecteur: Exit Function
Next
trouver_n = ""
End Function
A+
 
Re : Recupérer la colonne.

Re,

Ceci est un peu plus rapide :

Code:
Function trouver_n(vecteur, numero)
Dim v
vecteur = vecteur 'matrice, plus rapide
For Each v In vecteur
  If IsNumeric(CStr(v)) Then trouver_n = trouver_n + 1
  If trouver_n = numero Then trouver_n = v: Exit Function
Next
trouver_n = ""
End Function
A+
 
- 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

R
  • Question Question
Réponses
3
Affichages
105
regis6460
R
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…