XL 2010 Ligne sélectionnée active

HugoV

XLDnaute Nouveau
Bonjour à tous,

Mon problème est le suivant :

Je suis en train de créer une macro Excel permettant de masquer/afficher des colonnes selon la valeur d'une cellule donnée.
Le but étant de renseigner un équipement dans une colonne (colonne B en l’occurrence) et que les informations relatives à cet équipement se retrouve directement à côté.
A terme l'idée est de copier l'ensemble des données d'un formulaire, de les coller dans ce classeur et lorsqu'on se trouve sur la cellule de la ligne celle ci soit définit comme "active" et donc que la macro s'active.

Je vous joins le début de ce fichier celui ci n'est pas terminé mais j'attends de savoir si mon souhait est possible, je n'ai pas beaucoup de notions en programmation :)

Je vous remercie et vous souhaite une bonne journée

Cordialement,

Hugo
 

Pièces jointes

  • Macro tri donnée.xlsm
    43.1 KB · Affichages: 27

vgendron

XLDnaute Barbatruc
Hello

tout est possible. et pourtant, c'est pas la SNCF :)
pour bien travailler.. il faut que la demande soit claire
donc. pour commencer
si je comprend bien: en colonne B, tu es amené à ecrire (ou choisir parmi une liste?) un des équipements qui se trouve en ligne 1
lorsque tu choisis un de ces équipements. automatiquement, les colonnes concernées sont affichées..
ainsi, un formulaire s'ouvre? et tu saisis les infos souhaitées?
ou tu tapes directement dans les colonnes affichées?
si formulaire: dessines en un selon ton souhait, et on y metta le code qui va bien

en attendant, j'ai modifié ton code:
les End if sont, je pense à la mauvaise place

j'ai remplacé avec un select case.. plus sympa à traiter

VB:
Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Target, Range("B5:B1000")) Is Nothing Then
    Columns("F:DC").EntireColumn.Hidden = False 'on commence par tout afficher
    Select Case Target
    Case "ASCENSEUR"
        Columns("F:DC").EntireColumn.Hidden = True 'et on masque les colonnes inutiles
       
    Case "MONTE CHARGE"
        Union(Columns("D:E"), Columns("G:DC")).EntireColumn.Hidden = True 'et on masque les colonnes inutiles

    Case "COMPTEUR ELECTRIQUE"
        Union(Columns("D:F"), Columns("K:DC")).EntireColumn.Hidden = True 'et on masque les colonnes inutiles
       
    Case Else
        Columns("F:DC").EntireColumn.Hidden = False 'on ne masque rien
   
    End Select
End If
End Sub
 

vgendron

XLDnaute Barbatruc
regarde la PJ

1) dans la feuille 3: liste des équipements possibles
2) dans la feuille caractéristique: une liste de validation qui permet de sélectionner l'équipement
3) la macro affiche les colonnes qui vont bien
 

Pièces jointes

  • Macro tri donnée.xlsm
    43.8 KB · Affichages: 24

vgendron

XLDnaute Barbatruc
avec nouveau code qui cherche tout seul les colonnes à afficher.. donc. plus besoin du select case..
VB:
Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Target, Range("B5:B" & Range("A" & Rows.Count).End(xlUp).Row)) Is Nothing And Target.Count = 1 Then
    Columns("C:DC").EntireColumn.Hidden = False 'on commence par tout afficher pour pouvoir détecter avec le end(xltoright)
    If Target <> "" Then
        Set c = Range("1:1").Find(Target, lookat:=xlWhole) 'on cherche l'emplacement de l'équipement
        If Not c Is Nothing Then
            ColDeb = c.Column
            ColFin = ColDeb
            If c.Offset(0, 1) = "" Then 'si à coté il y a du vide, c'est qu'il s'agit d'un élément de l'équipement
                ColFin = c.End(xlToRight).Offset(0, -1).Column
            End If
            Columns("C:DC").EntireColumn.Hidden = True 'on masque tout
            Range(Columns(ColDeb), Columns(ColFin)).EntireColumn.Hidden = False 'et on affiche que ce que l'on souhaite
        End If
    End If
End If
End Sub
 

HugoV

XLDnaute Nouveau
Bonjour vgendron ,

Incroyable votre dernier code ... je ne pensais pas que c'était possible cela me facilite bien la tache merci beaucoup :)
Je suis près du but, enfaîte à terme je ne serais pas amener à écrire dans la colonne B mais à coller des données issues d'une autre feuille Excel, puis de saisir directement les données à compléter dans les colonnes correspondantes.
Donc enfaîte, ce que je cherche par rapport à cette macro , c'est qu'une fois que j'ai collée toutes mes données je reviens à une ligne que je dois compléter et lorsque je me trouve sur cette ligne les données de l'équipement de cette ligne s'affiche .... Je ne sais pas si cela est possible

Encore merci pour votre aide,

Hugo
 

Pièces jointes

  • Macro tri donnée.xlsm
    43.9 KB · Affichages: 24

vgendron

XLDnaute Barbatruc
Donc enfaîte, ce que je cherche par rapport à cette macro , c'est qu'une fois que j'ai collée toutes mes données je reviens à une ligne que je dois compléter et lorsque je me trouve sur cette ligne les données de l'équipement de cette ligne s'affiche .... Je ne sais pas si cela est possible

si je comprend bien
tu copies colles tous les équipements venant d'une autre feuille, d'un coup en B5:B18
et ensuite. tu cliques sur une des lignes et les colonnes s'affichent pour etre remplies..

je pense qu'il suffit de déplacer le code proposé dans l'évènement Worksheet_SelectionChange au lieu de Worksheet_Change
 

Discussions similaires

Réponses
2
Affichages
252
Réponses
8
Affichages
204