Microsoft 365 [MaCell] si delete

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Bonjour à toutes et à tous :)

Il y a fort longtemps, notre cher Gérard job75 m'avait donné le code pour nommer au clic une cellule permettant de s'y référer à tout moment.
Je m'en sers depuis longtemps (ce code est partout dans mes fichiers :)). Il fonctionne nickel.
Merci encore à Gérard :)

Il y a quand même une chose (petite je pense) que je n'ai pas réussi à coder de mon côté.

Vous le verrez dans le classeur exemple joint :
au clic
de "a1:c20", je nomme la cellule active ([MaCell])
sur "H6", je sélecte ([MaCell]) et je met sa valeur en "J6"
sur "E4", je supprime ([MaCell])

Mon besoin
Si clic sur "E4"= [MaCell] supprimée
J'ai besoin au clic sur "H6" que la valeur de"J6" soit : "Ma Cellule n'existe pas"

J'ai des tests sans y parvenir.
Auriez-vous le bon code ?
Un grand merci à toutes et à tous :)
Je continue les "tribulations".....
:)
 

Pièces jointes

  • 01 MaCell.xlsm
    19.9 KB · Affichages: 8
Solution
pour se passer des "on error resume next" (à mon avis les puristes diront que la gestion des erreurs est indissociable)

VB:
Private Sub Worksheet_SelectionChange(ByVal R As Range)
If Not Intersect(R, Range("a1:c20")) Is Nothing Then
    ActiveCell.Name = "MaCell" 'nomme la cellule
    [J6].Formula = "=MaCell"
End If

If Not Intersect(R, Range("h6")) Is Nothing Then
    If test_name("MaCell") Then
        [MaCell].Select
    Else
        [J6].Value = "Ref ""MaCell"" n'existe pas"
    End If
End If
If Not Intersect(R, Range("e4")) Is Nothing Then
    If test_name("MaCell") Then
        ThisWorkbook.Names("MaCell").Delete
    End If
    [J6].Value = "Ref ""MaCell"" n'existe pas"
End If
End Sub
Public Function test_name(nomplage As String) As...

RyuAutodidacte

XLDnaute Impliqué
Supporter XLD
Bonjour à tous,

@Usine à gaz
Il y a beaucoup de cellules non utilisées et c'est souvent celles qui sont aux extrémités (utilisation de XFD1 et XFD2) - pas de champs nommé ici

Donc voilà une autre façon de faire en espérant avoir bien compris :

MaCell.gif

VB:
Private Sub Worksheet_SelectionChange(ByVal R As Range)
    If Not Intersect(R, Range("A1:C20")) Is Nothing Then
        Range("XFD1").Value = ActiveCell.Value
        Range("XFD2").Value = ActiveCell.Address
        If Range("H6").Value = "Ma Cellule n'existe pas" Then
            Range("H6").Value = "MaCell dispo"
        End If
    End If
   
    If Not Intersect(R, Range("H6")) Is Nothing Then
        If Range("XFD1").Value <> "" Then
            Range("H6").Value = Range("XFD1").Value
            Range(Range("XFD2").Value).Select
        End If
    End If
   
    If Not Intersect(R, Range("E4")) Is Nothing Then
        Range("XFD1:XFD2").Value = ""
        Range("H6").Value = "Ma Cellule n'existe pas"
    End If
End Sub
Edit : petite modif du code pour éviter une erreur sur le Select
 
Dernière édition:

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Bjr vgendron, Bjr TooFatBoy, Bjr le Forum :)

Vieux motard que j'aimais :)

De gros soucis en ce moment et pas trop la tête, ni le temps de vous répondre.

Voici quand même une p'tite' réponse à vos questions :

Mes demandes
Toutes mes demandes sont motivées par une action, une formule ou un code que je ne parviens pas à faire
Les fichers tests ne sont que des "exemples" pour appuyer mes demandes
Les réponses qui me sont données sont toutes intégrées dans mes fichiers de travail.
Pour qu'elle donnent les résultats voulus (dans le fichier de travail), je les modifie (principalement les codes)… Je les bidouille.

En ce qui concerne MaCell
Nommer une cellule me permet de m'y référer : pour une action, pour lancer un code, pour calculer une autre cellule etc… sans avoir besoin de sélectionner la cellule nommée "MaCell)
Vgendron : Ce nom. tu l'utilises quelque part ailleurs?? : Effectivement, je l'utilise "quelque part ailleurs" selon mes besoins

Dans le fichier test que je joins :
Ce n'est qu'un test et "peu importe" que la cellule en "J" soit = [MaCell] ou valeur
Vgendron : c'est quoi l'interet de donner un nom à UNE cellule changeante ?" : la cellule nommée reste ma référente tant que MaCell n'est pas supprimée.

TooFatBoy
As-tu bien compris quand est appelée la macro Worksheet_SelectionChange ?
Est appelée au Clic et n'agit que si clic cellule "E3" ou "E4"

Je remets le fichier tests en pièce jointe.
J'espère avoir expliqué de façon "compréhensible" ma philosophie lol :)
Si vous avez d'autres points à voir, je ne suis pas certain de pouvoir vous répondre azujourd'hui.

Promis, je le ferai dès que possible.
Bon dimanche à vous deux et à toutes et à tous,
:)
 

Pièces jointes

  • 01 MaCel VGendron #Post 8.xlsm
    22.4 KB · Affichages: 1
Dernière édition:

TooFatBoy

XLDnaute Barbatruc
Content de voir que tu es de retour par minou. 😉


As-tu bien compris quand est appelée la macro Worksheet_SelectionChange ?
Est appelée au Clic et n'agit que si clic cellule "E3" ou "E4"
C'est bien ce que je supposais que tu pensais.

En fait, ce n'est pas exactement "au clic". C'est lorsque la sélection change.
Ça peut donc être lorsqu'on relâche le bouton gauche de la souris après avoir sélectionné une plage de plusieurs cellules.

La plage de cellules sélectionnée peut par exemple être C3:H7.
Dans ce cas, les trois tests IF de ta macro sont positifs. À toi de voir si cela peut être un souci ou non.
 

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Content de voir que tu es de retour par minou. 😉



C'est bien ce que je supposais que tu pensais.

En fait, ce n'est pas exactement "au clic". C'est lorsque la sélection change.
Ça peut donc être lorsqu'on relâche le bouton gauche de la souris après avoir sélectionné une plage de plusieurs cellules.

La plage de cellules sélectionnée peut par exemple être C3:H7.
Dans ce cas, les trois tests IF de ta macro sont positifs. À toi de voir si cela peut être un souci ou non.
Dans ce cas, j'ai dans mes 30Go de fichiers et de codes lol ;)
VB:
If Selection.Count <> 1 And ActiveCell <> "TEXTBOX OUVERT" And ActiveCell.MergeCells = False Then
    MsgBox ("Plusieurs cellules sélectionnées :" & Chr(10) & "une seule cellule à la fois")
    Application.EnableEvents = False
    [A1].Select
    Application.EnableEvents = True
    Exit Sub
    End If
voire fichier joint
:)
 

Pièces jointes

  • 01 MaCel VGendron #Post 8.xlsm
    23.7 KB · Affichages: 2

Discussions similaires

Statistiques des forums

Discussions
312 213
Messages
2 086 307
Membres
103 174
dernier inscrit
OBUTT