Titre alternatif

Bonjour la compagnie

"Titre alternatif", oui, le titre de ma demande n'est pas très explicite... , c'est pourquoi je joins un fichier ("Exemple.Pays.xlsm")

En cliquant sur A1 (intitulé "Tri"), j'obtiens un tri de A à Z de ma colonne A ; ça marche : j'ai fait une maco "Tri".

En cliquant sur B1 (intitulé Tri inverse), j'obtiens un tri de Z à A toujours dans ma colonne A; ça marche aussi : j'ai fait une macro "TriInverse".

Et pour faire fonctionner le tout, j'ai codé ma feuille :

Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)

Application.ScreenUpdating = False

If Target.Range.Address = "$A$1" Then

Call Tri

End If

If Target.Range.Address = "$B$1" Then

Call TriInverse

End If

Application.ScreenUpdating = True

End Sub

Ce que je souhaite

1) c'est de n'avoir à cliquer que sur A1, qui alternativement trierait de A à Z, puis de Z à A, etc.

2) que dans le même temps, l'intitulé sur A1 se change alternativement aussi, passant de "Tri", à "Tri inverse", etc.

J'epère avoit été plus clair

Merci à toutes les bonnes volontés

Bonjour,

Avec un double clic sur A1

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
  Application.ScreenUpdating = False
  Cancel = True
    If Target.Value = "Tri" Then
      Call Tri
      Target.Value = "Tri inverse"
      Exit Sub
    End If
    If Target.Value = "Tri inverse" Then
      Call TriInverse
      Target.Value = "Tri"
    End If
  Application.ScreenUpdating = True
End Sub

Bonjour,

dans votre code il suffit de tester la même adresse "A1" mais pour faire un tri plutôt qu'un autre il suffit de tester l'intitulé de cette cellule puisqu'elle sera modifiée en fonction du code lancé :

Si le code Tri est lancé à l'issue Range("A1") = "Tri"

Si le code TriInverse est lancé à l'issue Range("A1") = "Tri Inversé"

Je vous laisse travailler là dessus

@ bientôt

LouReeD

Merci, M12

Cela marche parfaitement .

Le seul hic, c'est le double clic: j'aurais préféré un simple clic gauche. J'ai essayé de modifier ton code, mais mes maigres connai ssances sont trop limitées... Jai seulement réussi à faire fonctionner tout ça avec un clic droit ! Ce qui ne m'arrange guère.

Merci également LouReed de t'intéresser à mon problème, mais ce que tu écris est du chinois, pour moi.

Et bien je vous avoue ne pas avoir vu M12 vous répondre...

Du coup ce que je disais est ce qu'il a codé :

Si Target.Value = "Tri"

si la cellule d'entête de la colonne a pour valeur Tri alors il faut lancer le "tri inversé" et changer la valeur de la cellule d'entête en Tri Inversé.

Et inversement.

Pour que cela fonctionne avec le clic gauche il faut prendre le code événementiel SelectionChange

Mais attention, pour le lancer "deux fois" ou plus à la suite il faudra quitter la sélection de la cellule A1 et y revenir.

@ bientôt

LouReeD

Ave LouReed,

Je suis stupéfait de la rapidité de ta réponse !

J'ai suivi ton conseil, et j'ai donc codé :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Application.ScreenUpdating = False

Cancel = True

If Target.Value = "Tri" Then

Call Tri

Target.Value = "Tri inverse"

Exit Sub

End If

If Target.Value = "Tri inverse" Then

Call TriInverse

Target.Value = "Tri"

End If

Application.ScreenUpdating = True

End Sub

Mais cela ne marche pas !

j'ai une "erreur d'exécution '13':"

suivi de "Incompatibilité de type"

suivi dans VBA de " If Target.Value = "Tri" Then" surligné en jaune.

P.S. : Je vois que tout le monde vouvoie tout le monde et que je suis le seul à tutoyer ; si c'est l'usage, je m'y plierai, sinon, à près de 70 ans (bientôt 68 ), j'ai pris l'habitude de tutoyer ceux qui, a priori, sont plus jeunes que moi

(sans doute la plupart sur les forums informatique, il me semble...)

Ben c'est sur avec mes 5 ans !

Moi par habitude je vouvoie sur le NET, on ne sait jamais sur qui on tombe !

Pour peu que ce soit mon père...Mon patron... Mon voisin... Bref dans le doute vouvoie !

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
 Application.ScreenUpdating = False
 Application.EnableEvents=False
 Cancel = True
 If Target.Value = "Tri" Then
 Call Tri
 Target.Value = "Tri inverse"
 Exit Sub
 End If
 If Target.Value = "Tri inverse" Then
 Call TriInverse
 Target.Value = "Tri"
 End If
 Application.EnableEvents=True
 Application.ScreenUpdating = True
 End Sub

Peut être en ajoutant Application.EnableEvents afin de ne pas faire tourner en rond l'événementiel...Comme sur le code fourni.

@ bientôt

LouReeD

Ave LouReed,

Non, cela ne marche pas...

J'ai la même erreur !

C'est vrai que pour 5 ans, tu me sembles bien éveillé Ne serait-ce pas toi, ce gamin qui a eu son bac à 3 ans et qui est docteur en physique subatomique depuis ses cinq ans ? Tu es démasqué !

Non, je ne crains pas que ce soit mon père (93 ans) ou ma mère (97 ans) qui surfent sur le Net, malgré leur excellente forme physique et intellectuelle (si! si!) ; en outre, je n'ai plus de patron ( professeur de philosophie en retraite) et avec mes voisins, nous nous tutoyons depuis toujours...

Merci de ton aide tout de même.

cordialement.

Bon ceci fonctionne chez moi :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim La_Valeur As String
    If Not Intersect(Target, Range("A1")) Is Nothing Then
        Application.ScreenUpDating = False
        La_Valeur = Target.Value
        If La_Valeur = "Tri" Then
          Call Tri
          Range("A1") = "Tri Inverse"
        ElseIf La_Valeur = "Tri Inverse" Then
          Call TriInverse
          Range("A1") = "Tri"
        End If
    End If
    Application.EnableEvents = False
        Range("A2").Select
    Application.EnableEvents = True
End Sub

Remarquez le Range("A2").select à la suite du tri, cela permet automatiquement de changer de cellule, comme cela des clics consécutifs sur A1déclencheront toujours le tri demandé.

Remarquez aussi que cette sélection est entourée de Application.EnableEvents, ceci afin que cette sélection n'enclenche pas une boucle infinie de SelectionChange !

A savoir que Application.ScreenUpDating repasse automatiquement à True à la fin de la Sub, nul besoin de le mettre, mais c'est plus propre peut-être.

@ bientôt

LouReeD

Bonjour LouReed,

Non, cela ne marche toujours pas chez moi !

Peut-être est-ce dû à la version d'Excel que j'utilise (2019)...

Plus encore : après le même message d'erreur, impossible de se positionner ailleurs que sur A2 ; la souris y revient systématiquement !

Je joins mon fichier (Exemple.Pays2.xlsm) pour plus de clarté.

Cordialement.

9exemple-pays2.xlsm (19.43 Ko)

Re, LouReed,

Curieux... Je viens de télécharger mon propre fichier, et là, stupeur ! Il ne se passe pas la même chose qu'avec celui que j'ai envoyé.

En fait il ne se passe rien !

Comprenne qui pourra...

Cordialement.

Re Re LouReed,

En fait, pour qu'il se passe ce que j'ai décrit, c'est un double-clic qu'il faut faire ; avec un clic "simple", rien ne se passe...

Cordialement.

Bonjour,

En effet, les 3 lignes du Range("A2") doivent être placé avant le End If.

Désolé, là où il se trouve fait qu'à chaque changement de cellule la A2 est sélectionnée !

Pour le moment je n'ai pas accès à mon ordinateur...

@ bientôt

LouReeD

Si vous mettez des pièges...

En effet, lorsqu'il y a un lien hypertexte, la macro ne se lance pas...

Donc voici votre fichier modifié :

7exemple-pays2.xlsm (25.83 Ko)

Transformation de la colonne A en tableau structuré, suppression des liens hypertexte des cellules A1 et B1, modification du code afin de placer les Application.EnableEvents au bon endroit.

@ bientôt

LouReeD

Ave LouReed,

Désolé de t'enquiquiner avec mon problème.

Les liens Hypertexte étaient présents dès mon premier fichier, et c'est vrai que je n'ai pas pensé à le dire...

En fait ton code ne fonctionne que tant qu'on ne sélectionne pas la colonne A...

Si on la sélectionne, la même erreur se produit, et la macro ne fonctionne plus. Il faut sortir d'Excel sans sauvegarder, puis rouvrir pour que cela fonctionne à nouveau.

Mais tu t'es déjà suffisamment pris la tête pour moi.

Je me contenterai du double-clic (c'est pas la mort !)

Merci encore de l'intérêt que tu m'as porté.

Cordialement, et à plus.

C'est dingue ça !

Vous n'êtes pas le premier à me dire que ce que j'envoie ne marche pas alors que chez moi cela fonctionne !

Je dois être maudis !

@ bientôt

LouReeD

Je suppose que la version d'Excel doit y être pour quelque chose.

Ce ne serait pas la 1ère fois...

Je vais essayer avec une autre version, si j'en trouve une et je te tiens au courant.

Merci encore et à plus.

Cordialement.

Rechercher des sujets similaires à "titre alternatif"