Listing des coordonnées des cellules correspondant à un critère

HUGO BASS Messages postés 20 Date d'inscription   Statut Membre Dernière intervention   -  
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour à toutes et tous,

Je cherche à partir d'un tableau contenant plusieurs données à faire un listing des adresses de toutes les cellules correspondant à un critère donnée. En l'occurrence les valeurs non numériques.
Ci joint fichier exemple.

https://www.cjoint.com/c/DIsqL1hOvWF


Merci
Cordialement
Hugues



5 réponses

ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
Bonjour

un exemple
https://www.cjoint.com/?3Isrd3Zqy6O

Cdlmnt
0
HUGO BASS Messages postés 20 Date d'inscription   Statut Membre Dernière intervention  
 
merci
0
HUGO BASS Messages postés 20 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour CCM81,

Merci pour ta réponse rapide que je retiendrais si je n'arrive pas par formule car elle répond à ma problématique même si j'aurais préféré éviter les macros.
J'ai essayé aussi en nommant une plage de donnée par formule matricielle avec fonction adresse et est num mais sans succès.

Cordialement
0
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
Bonjour,

Je viens de dénicher un résultat par formule? Cependant, c'est tellement alambiqué que la solution par macro reste la plus simple...

La solution par formule passe par un champ intermédiaire de la même taille que le tableau initial. On peut le masquer par la suite.
La formule à étendre dans ce champ intermédiaire est :
=SI(NON(ESTNUM(B4:H32));CELLULE("adresse";B4:H32);"")
Formule matricielle, à valider par Ctrl+Shift+Entrée
Ensuite, ne reste qu'à représenter les cellules non vides de ce champ dans la colonne ou tu veux les résultats.
Pour cela, la formule matricielle de Jacques Boisgontier, trouvée ICI fonctionne :
=SI(LIGNES($1:1)<=NBVAL(K4:Q32);INDEX(K4:Q32;MOD(PETITE.VALEUR(SI(K4:Q32<>"";COLONNE(K4:Q32)*10^5+LIGNE(INDIRECT("1:"&LIGNES(K4:Q32))));LIGNES($1:1));10^5);ENT(PETITE.VALEUR(SI(K4:Q32<>"";COLONNE(K4:Q32)*10^5+LIGNE(INDIRECT("1:"&LIGNES(K4:Q32))));LIGNES($1:1))/10^5)-COLONNE(K4:Q32)+1);"")
ou K4:Q32 est le champ intermédiaire.
Formule matricielle, à valider par Ctrl+Shift+Entrée

Ci-joint ton classeur exemple en retour
0
HUGO BASS Messages postés 20 Date d'inscription   Statut Membre Dernière intervention  
 
Re Bonjour CCM81,

Je me plonge dans ta macro (merci cela fonctionne à merveille) et si en plus de répondre à ma problématique elle pouvait transformer l'adresse des cellules obtenues en lien hypertexte, alors là sans contestation possible je choisirais ta solution par macro plutôt que par formule.

A ton avis est ce réalisable ?

Merci

Cordialement
Hugues
0
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
Re-

Petite variante à la version de CCM81, par formule personnalisée.
Dans le module ou se trouve déjà le code de CCM81, copiez-collez ce code :
Function Adresses_Cel_Non_Num(Plage As String, Numero As Long)
Dim maPlage As Range, cel As Range, tb(), i As Long
ReDim Preserve tb(i)
tb(0) = ""
Set maPlage = Range(Plage)
For Each cel In maPlage
    If Not IsNumeric(cel.Value) Or cel.Value = "" Then
        i = i + 1
        ReDim Preserve tb(i)
        tb(i) = cel.Address
    End If
Next cel
If Numero > UBound(tb) Then Numero = 0
Adresses_Cel_Non_Num = tb(Numero)
End Function


Dans la feuille de calcul, en J4 (par exemple) :
=Adresses_Cel_Non_Num("B4:H32";LIGNE()-3)
Le -3 ici est parce que l'on saisi la formule en J4. En K1, il conviendrait d'écrire :
=Adresses_Cel_Non_Num("B4:H32";LIGNE())
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
Pour les liens hypertexte vers les cellules

Const T = "Tablo"

Public Sub ListeAdr()
Dim cel As Range, deb As Range, k As Long, adr As String, f As String
Set deb = Selection
f = ActiveSheet.Name
k = 0
For Each cel In Range(T)
If Not IsNumeric(cel.Value) Or cel.Value = "" Then
adr = cel.Address
ActiveSheet.Hyperlinks.Add Anchor:=deb.Offset(k, 0), Address:="", SubAddress:= _
f & "!" & adr, TextToDisplay:=adr
k = k + 1
End If
Next cel
End Sub

Salutations à pijaku au passage

Cdlmnt
0
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
Juste au passage, mes salutations ccm81.
A+
0