[Feuille Sommaire] Récupérer cellules non vides + lien autos

Fermé
Quiche_Excel Messages postés 6 Date d'inscription lundi 16 septembre 2013 Statut Membre Dernière intervention 29 janvier 2015 - Modifié par Quiche_Excel le 16/09/2014 à 00:30
via55 Messages postés 14506 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 27 décembre 2024 - 16 sept. 2014 à 23:51
Bonjour,

J'ai un fichier excel avec une feuille contenant 3 colonnes.

Colonne A : Fonctionnalité
Colonne B : Sous-Fonctionnalités
Colonne C : Règles de gestion

J'aimerai faire une nouvelle feuille "sommaire" qui récupère automatiquement le contenue de la colonne A et B sans les cellules vides et en faisant des liens automatique si cela est possible :)


Merci beaucoup pour votre aide !

EDIT : trouvé la réponse tout seul avec la formule
=LIEN_HYPERTEXTE("#Features!A"&EQUIV(A2;Features!A:A;0);RECHERCHEV(A2;Features!A:F;4;FAUX))
A voir également:

4 réponses

via55 Messages postés 14506 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 27 décembre 2024 2 738
16 sept. 2014 à 00:46
Bonsoir

Il faut passer par une macro :

Exemple : https://www.cjoint.com/?0IqaVkShoKz

Tout ajout, modification ou effacement d'une donnée en colonne B de la feuille 1 lance la macro qui met à jour la feuille Sommaire en reprenant les données des colonnes A et B et en créant les liens hypertextes

Cdlmnt
0
Quiche_Excel Messages postés 6 Date d'inscription lundi 16 septembre 2013 Statut Membre Dernière intervention 29 janvier 2015
16 sept. 2014 à 09:53
Merci je vais tester ça ce soir :)
0
Quiche_Excel Messages postés 6 Date d'inscription lundi 16 septembre 2013 Statut Membre Dernière intervention 29 janvier 2015
16 sept. 2014 à 23:03
Hello via55,

Merci pour ton aide mais ta macro ne récupère que le contenu de la colonne B :(
La A ne se met pas à jour.

J'essaie de me mettre au VBA et de comprendre ta macro, pour le moment je galère :)
0
via55 Messages postés 14506 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 27 décembre 2024 2 738
16 sept. 2014 à 23:51
Hello

1) La macro dans Module 1:
1° efface les lignes de Sommaire
2° Parcours les lignes de l'autre feuille et récupère les contenus des colonnes A et B pour les reporter dans Sommaire en créant les liens hypertexte

J'ai mis des explications dans la macro pour que tu essayes de la comprendre :

Sub MAJsommaire()
'desactive rafraichissement écran
Application.ScreenUpdating = False
'variable de ligne de départ (1 car titre en ligne 1 sinon serait 0)
x = 1
Dim DernLigne As Long
' derniere ligne non vide en colonne B de la feuille active
DernLigne = ActiveSheet.Range("B" & Rows.Count).End(xlUp).Row
' recupere nom de la feuille active
nom = ActiveSheet.Name
' Selection feuille sommaire et effacement lignes 2 à 100 en A et B
Sheets("SOMMAIRE").Select
Range("A2:B1000").Select
Selection.ClearContents
' boucle sur les lignes de la 1ere feuille depuis la 2 jusqu'à la derniere non vide en B
For n = 2 To DernLigne
' Si la cellule en A 1ere feuille n'est pas vide alors
If Sheets(nom).Range("A" & n) <> "" Then
' on incremente le compteur de lignes de 1
x = x + 1
' on selectionne Sommaire
Sheets("SOMMAIRE").Select
' on copie en colonne A de sommaire ligne x la valeur en colonne A ligne n de la 1ere feuille
Sheets("SOMMAIRE").Range("A" & x) = Sheets(nom).Range("A" & n)
' on recule le compteur de ligne de 1 (pou pouvoir inscrire la valeur en B sur la même ligne)
x = x - 1
End If
' Si la cellule en B 1ere feuille n'est pas vide alors
If Sheets(nom).Range("B" & n) <> "" Then
' on incremente le compteur de lignes de 1
x = x + 1
'on recupere l'adresse de la cellule colonne B
cell = Sheets(nom).Range("B" & n).Address
'on recupere le texte inscrit dans la cellule colonne B
ref = Sheets(nom).Range("B" & n)
' on selectionne feuille sommaire cellule en colonne B ligne x
Sheets("SOMMAIRE").Range("B" & x).Select
' on y place un lien hypertexte (recomposé en concaténant ' & nom de la 1ere feuille & ' & ! & l'adresse de la cellule
' le texte à afficher dans la cellule est celui recupéré dans variable ref
ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:="'" & nom & "'" & "!" & cell, TextToDisplay:=ref
End If

Next
' Repositionnement sur première feuille
Sheets(nom).Select
' réactivation du raffraichissement écran
Application.ScreenUpdating = True
End Sub

2) La macro dans le Worksheet de la Feuille 1 (Dans l'éditeur VBA double clic sur feuille 1 dans l'arborescence pour la visualiser) retourne sans rien faire (Exit SUb) si la colonne dans laquelle une valeur change est autre que la 2 (colonne B) sinon elle envoie exécuter la macro précédente de mise à jour

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 2 Then Exit Sub
MAJsommaire
End Sub

Si tu souhaites que la mise à jour se fasse également quand tu ajoutes ou modifie une valeur en colonne A de la 1ere feuille il suffit d'enlever le < dans la 1ere ligne : If Target.Column > 2 Then Exit Sub
la condition au lieu d'être si la colonne du changement est différente de 2 alors sortie, sera si la colonne de changement est supérieure à 2 alors sortie

Cdlmnt

Si tu n'arrives pas appliquer les macros sur ton fichier post un exemple allégé et anonymé de ton fichier sur cjoint.com et indiques moi le lien fourni, je regarderai

Cdlmnt

0