Microsoft 365 mémo_clic fonctionnement

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Bonjour à toutes et à tous,

J'ai un code que m'a passé un membre du forum que je remercie au passage.
Ce code est super !!!
Il me permet d'afficher à la hauteur choisie la ligne de la cellule cliquée.
Egalement, quand je clic sur la cellule d'une autre ligne,
Il remet la ligne précédemment cliquée à la hauteur initiale
et m'affiche la nouvelle ligne cliquée à la hauteur choisie.

J'ai un gros souci cf discussion https://www.excel-downloads.com/threads/affichage-lignes-masquees-temps-de-traitement.20039711/
Ce code me permet de solutionner à 50% mon souci.

En effet, je peux quand je clique copier une ligne formatée ce qui me permet d'afficher (dans mon fichier de travail) les cellules pour qu'elle soient parfaitement lisibles,
notamment en ce qui concerne les longues annonces et nos commentaires = 50% du problème résolu


En revanche, je ne sais pas coder le retour :
C'est à dire qu'à l'affichage de la nouvelle ligne cliquée ;
Il remet la ligne précédemment cliquée à la hauteur initiale et efface ses formats (.Selection.ClearFormats)

Si vous aviez la bonne codification, ce serait super.
Je joins un fichier test.
Un super grand remerciement pour celui-là aussi :)
lionel,
 

Pièces jointes

  • memo_clic.xlsm
    20.4 KB · Affichages: 18

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Re-Bonjour à toutes et à tous,

J'ai fini par trouver mais cela m'oblige à cliquer en sélectionnant tout une ligne et dans mon fichier cela me pose un autre souci LOL :mad:
Il faudrait que ça se fasse en me laissant la possibilité de cliquer sur une cellule.
Je joins le fichier là où j'en suis.
Je continue à chercher ...
lionel,
 

Pièces jointes

  • memo_clic.xlsm
    21.1 KB · Affichages: 13

laurent950

XLDnaute Accro
Bonsoir,
Justement ce poste m’intéresse aussi :
- Plusieurs points
A) ce qui vous intéresse : le code qui je pense peux vous être utile serait plus un modèle Objet.
Le code qu'il y a dans le fichier excel est certes propre mais pas optimum (Il n'est pas codé Objet pour faire simple)
B) Justement l'idée serait de codé objet :
C'est a dire que l'ont peux conserver comme vous dite : "Il me permet d'afficher à la hauteur choisie la ligne de la cellule cliquée."
L'ensemble de toutes les informations nécessaires stocké est conservé dans une variable dite : Objet
C) J'ai aussi fait un test :
J'ai voulu copier une variable dite Objet est la stocké dans une variable Tableau :
Résultat possible (mais il y a toujours un liens entre la variable tableau et objet.
Je m'explique si je change la couleur de la cellule A1 (Exemple texte Noir en Gras) en le faisant directement dans la feuille excel
en relation par un texte Rouge Gras (Cela est consigné dans la variable Objet) Normal c'est une relation Byref (Complex mais a lire)
D) Ensuite pour votre cas la solution et la suivante :
Il faut savoir lire dans la variable objet au travers de la Fenêtre Variable Local (Mettre un espion sur cette variable)
Ici il y a une tonne d'information et je n'ai pas les explications mais c'est (la classe ou les classes) d'Excel
Donc se qui est intéressant :
C'est de récupérer les paramètres uniquement ceux nécessaire (il faut les connaitre)
Une fois connus les stockés dans des variables tableaux (a architecturer) et aussi par des Module de classe à construire
C'est à dire que l'on peux stocké un certain nombre d'information, qui prendront très peux de places pour les réaffecter ou ont veux et a sa guise

Si quelqu'un connait le mode de fonctionnement de cette Fenêtre Variable Local (Mettre un espion sur cette variable) je suis preneur.
l'idée lorsque l'ont ouvre la boîte de dialogue récupérer la pile des appels
Lien : https://www.developpez.net/forums/d...-vba-excel/recuperer-nom-procedure-appelante/

ici une piste : Comment lister le nom de toutes les procédures contenues dans un classeur ?
Lien : https://excel.developpez.com/faq/?page=VBA

très intéressent aussi :
Lien : Aide Travailler avec VBA / Propriété VBA / Environnement de développement intégré (IDE)
https://help.libreoffice.org/latest/fr/text/sbasic/shared/vbasupport.html
https://help.libreoffice.org/6.3/fr/text/shared/optionen/01130100.html?&DbPAR=WRITER&System=WIN
https://help.libreoffice.org/6.3/fr/text/sbasic/shared/01030000.html?&DbPAR=WRITER&System=WIN

encore cela : Objet ListObject (Excel)
Lien : https://docs.microsoft.com/fr-fr/office/vba/api/excel.listobject

Et pourquoi pas construire sur le modèle de cette macro le petit bout de programme qui pourra évolué par la suite !

J'avais déjà réfléchit sur votre soucis de format et de taille de fichier, mais pas encore résolu

Laurent
 
Dernière édition:

laurent950

XLDnaute Accro
Bonsoir Lionel,
J'ai fais quelque exemple dans ce classeurs : Mémo clique revu (qui peux être évolutif)
- Je sais pas si cela peux vous aider mais on peux tous stocker et récupérer
J'ai utilisé un userform pour exemple (mais on peux stocker dans des feuilles ou ailleurs)

Ps : j'ai laisser ceci
ctiveSheet.Protect Password:="", DrawingObjects:=True, Contents:=True, Scenarios:=True
l'userform a 2 pages
c'est un exemple bien sur a adapter fait en vitesse
Laurent
 

Pièces jointes

  • memo_clic_(7) Userform et Module de classe.xlsm
    33.9 KB · Affichages: 7
Dernière édition:

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Bonjour Laurent950, à toutes et à tous,

Merci laurent pour tes recherches et les liens qui sont une mine d'informations super intéressantes,,
Merci aussi pour ton fichier,

Mais ça ne correspond pas au besoin de mon fichier.
Il faudrait que ce soit comme le fichier joint sans UF.

Le code fonctionne très bien à "un poil près".
En effet, quand je clique sur une ligne blanche :
1…........... , la ligne cliquée est bien mise à auteur 40,
1…........... , les formats de la ligne 3 sont bien copiés.
2…........... , la ligne précédemment cliquée est bien remise à auteur 15,

Le souci est que dans la ligne précédemment cliquée :
les formats sont gardés (hormis 1 cellule précédemment cliquée) ,
et j'ai besoin qu'ils soient effacés sur toute la ligne.


Je joins le fichier test.
Bon dimanche à toutes et à tous,
lionel,
 

Pièces jointes

  • memo_clic.xlsm
    23.5 KB · Affichages: 3

laurent950

XLDnaute Accro
Bonjour,
Le fichier exemple ne consigne pas les informations suivante à la fin de la procédure.
C'est à dire : La ligne précédemment cliqué : (Les informations ne sont pas consignés pour cause de sortie de procédure vba)
soit : 2…........... , la ligne précédemment cliqué est bien remise à auteur 15 = Impossible.

Alors :
Qu'elle sont les actions a faire ?
#1 : Garder en mémoire la ligne 3 avec la plage ("B1:Y1")
#2 : Choix dans votre feuille : une Lignes ou plusieurs lignes (exemple Ligne 6 à 9)
#3 : suivant le choix : Copie conforme de la ligne 3 avec la plage ("B1:Y1") pour :
- La hauteur de la ligne 3 = 40
- Plage de la ligne 3 avec la plage ("B1:Y1") = Couleurs (de fond et texte) ou Autres en complément
#4 : Le besoin est de consigné les informations suivante du Poste #2 :
- Les informations de la ligne ou des lignes Modifier
Dans votre fichiers c'est possible d'ajouter une feuille Excel complémentaire : exemple Nom : ParamFormat
C'est a dire de consigné les information nécessaires à conservé et à écrire dans la feuille ParamFormat (informations précédemment modifier poste #2)
Fichier memo_click :
Si vous analyser le fichier exemple c'est informations sont effacer a la sortie de la procédure !!!
#5 : avec le Poste #4 qui va servira a réinitialiser la ou les lignes précédemment cliqués:
- la ou les lignes précédemment cliqué seront remises comme à leurs états initial en récupérant les informations dans la feuille ParamFormat
Ensuite cela recommence les Poste #1 à #4

A étudier :
Le poste #4 est a travailler pour consigner les informations des lignes modifier a remettre au format d'origine :
Vous avez la réponse avec votre fichier

si vous avez des idées ou stocker les informations pour le poste #4

Cdt
Laurent
 
Dernière édition:

patricktoulon

XLDnaute Barbatruc
re
bonjour
dite moi si j'ai bien compris
je clique sur une ligne ou cellule et le format est memoriser puis elle est mis a 40 de rowheight en vert caca d'oie
quand je clique sur une new ligne ou cells la precedente est remis a l'etat avant son click et la new rebelotte

c'est ca ?

juste comme ca car j'ai survoler avec la moitié d'un oeuil ouvert
puisque a chaque fois c'est la ligne 3 qui est copié
il vous est pas venu a l'idée de juste mémoriser la ligne
et a chaque changement remettre la ligne en mémoire avec un simple paste (seulement le format) d'une copy de ligne 3
je dis çà je n'ai peut être pas tout compris ;)
 
Dernière édition:

laurent950

XLDnaute Accro
bonjour patricktoulon.
je clique sur une ligne ou cellule (le format est memoriser) de la ligne cliqué qui est bien mémorisé = ok
puis elle est mis (selon le modéle prédéfini de la ligne ligne 3 avec la plage ("B1:Y1") )
si la ligne 3 avec la plage ("B1:Y1") à pour format : 40 hauteur de rowheight en vert caca d'oie (comme en exemple) = Oui
quand je clique sur une new ligne ou cells la precedente est remis a l'etat d'origine avant son click et la new rebelotte = Oui
 

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Bonjour Laurent950,
Bonjour Patrick (merci d'être là toi aussi :))

Effectivement :
au clic sur une ligne blanche, c'est toujours de la ligne 3 que les formats sont copiés
Quand je clique sur une ligne blanche :
1…........... , la ligne cliquée doit être mise à auteur 40,
1…........... , les formats de la ligne 3 doivent être copiés sur la ligne qui vient d'être mise à hauteur 40.
2…........... , la ligne précédemment cliquée doit être remise à auteur 15 et les formats supprimés
(donc toutes les cellules de la ligne précédemment cliquée à blanc)
fichier joint :)
Un grand merci à vous 2 et à tous :)
lionel,
 

Pièces jointes

  • memo_clic.xlsm
    23.5 KB · Affichages: 5

patricktoulon

XLDnaute Barbatruc
re
donc si je comprend bien chaque lignes éventuellement cliquée peut avoir avant click son propre format y compris (cellule par cellule)

et ben c'est encore plus simple
au click tu memorise la ligne
copy la ligne disons en fin de tableau excel par exemple avec copy:=destination qui prends tout +le rowheight
une fois copiée tu la met a rowheight 40 en vert caca d'oie et font black (par exemple )
quand tu reclique si il y a une ligne mémorisée tu copy la dernière ligne du tableau seulement les format) dans la ligne mémorisée
et voila
 

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
"donc si je comprend bien chaque lignes éventuellement cliquée peut avoir avant click son propre format y compris (cellule par cellule)"
chaque lignes cliquée n'a pas de format

"copy la ligne disons en fin de tableau excel par exemple avec copy:=destination qui prends tout +le rowheight"
le format de la ligne 3 est copiée sur la ligne cliquée qui vient d'être mise à hauteur 40

"quand tu recliques si il y a une ligne mémorisée tu copy la dernière ligne du tableau seulement les format) dans la ligne mémorisée
et voila "
au reclique sur une nouvelle ligne sans format la ligne mémorisée est remise à hauteur 15 et ses formats supprimés

Pas de copy en dernière ligne du tableau

lionel :)
 

patricktoulon

XLDnaute Barbatruc
re
bon dans un premier jet
le principe (simple)

pour l'exemple
j'ai limité l'action aux rows 4 à 15
j'ai besoins de deux variables;oldrow et oldrowheight
dans evenement selection_change
je teste si oldrow>0
si oui je RRRR.....ECOPY LA précédente copier en ligne 16 et je paste juste le format +rowheight
je copy donc celle que je clique et la met en couleur pouhaa!!! et rowheight à 40
et ainsi de suite roule tambourg

demo3.gif



VB:
Dim oldrow As Long
Dim oldrowheight As Double
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Application.ScreenUpdating = False
    If Target.Row >= 4 And Target.Row <= 15 Then
        If oldrow > 0 Then
            Application.EnableEvents = False
            Cells(16, 1).Resize(, 5).Copy: Cells(oldrow, 1).Resize(, 5).PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
            Cells(oldrow, 1).EntireRow.RowHeight = oldrowheight
            oldrow = 0: oldrowheight = 15
            Application.EnableEvents = True
        
        Application.CutCopyMode = False
        End If
        With Cells(Target.Row, 1).Resize(, 5)

            .Copy: Range("A16").PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
            oldrow = .Row
            oldrowheight = .RowHeight
            .Font.Color = vbBlack
            .RowHeight = 40
            .Interior.Color = RGB(255, 150, 100)
         Application.CutCopyMode = False
       End With
    End If
End Sub

reste a lui dire de copier la ligne 3 si le countif = 0 dans la ligne
c'est juste une esquisse de principe
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 229
Messages
2 086 425
Membres
103 206
dernier inscrit
diambote