XL 2019 Changer cellule avec Double click

SamSam84

XLDnaute Nouveau
Bonsoir à tous,

Je fais appel à votre aide car je bloque sur une petite appli.

J'aimerai en fonction d'un double click dans une des cellule "Entreprise", le nom de cette entreprise, autrement dit la valeur de cette cellule apparaisse a l'intersection de cette cellule et de la colonne I (nommée Reception_des_livraisons). Vous arrivez à me suivre jusque la? Moi non 😅🤣
De plus, les entreprises devront se cumuler dans la cellule cible et non remplacer la valeur existante. En gros double click sur "Entreprise1", cela se rajoute à "Entreprise3" déjà présente dans la cellule cible.

J'ai essayé avec la fonction intersect, mais je crois bien que je l'utilise mal, ou qu'il est trop tard pour réfléchir 😅

Et petite cerise sur la gâteau, si lors d'un double click sur une entreprise celle-ci est déjà présente dans la cellule cible, elle devra être retirée de la cellule cible.

En vous remerciant d'avance ^^





Exemple.jpg
 

SamSam84

XLDnaute Nouveau
Bonjour Fred0o, désolé je n'ai pas trouvé le bouton "ajout de fichier excel" ...

Merci soan pour ton travail, c'est exactement ce que je souhaitais ! :)
Je vais essayer de comprendre ton code pour l'intégrer à mon fichier.

Vu que j'ai quelques colonnes en plus, quels sont les variables à adapter?
 

soan

XLDnaute Barbatruc
Inactif
@SamSam84, Fred0o,

le code VBA actuel est celui-ci :

VB:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
  Cancel = -1
  With Target
    If .CountLarge > 1 Then Exit Sub
    Dim vx$: vx = .Value: If vx = "" Then Exit Sub
    Dim chn$, lig&, col%: lig = .Row: If lig = 1 Then Exit Sub
    col = .Column: If col > 7 Or (col Mod 2 = 0) Then Exit Sub
    chn = Cells(lig, 9)
    If InStr(chn, vx) = 0 Then chn = chn & " " & vx Else chn = Replace$(chn, vx, "")
    Cells(lig, 9) = LTrim$(chn)
  End With
End Sub

si par exemple tu ajoutes 4 colonnes, il faudra adapter ceci :

1) 7 (= colonne G) : pour la colonne de la dernière Entreprise ;
cette colonne de la dernière entreprise sera la colonne K
... : If col > 11 Or (col Mod 2 = 0) Then Exit Sub

2) 9 (= colonne I) : pour la colonne "Réception des livraisons" ;
cette colonne deviendra la colonne M ➯ chn = Cells(lig, 13)
et : Cells(lig, 13) = LTrim$(chn)



la prochaine fois, pour pouvoir envoyer un fichier, tu pourras utiliser le bouton « Joindre un fichier » qui sera situé en bas de la fenêtre du post en cours d'édition. :) (sans oublier que ce fichier transmis doit être anonyme, donc s'il y a des données confidentielles, il faudra les remplacer par des données fictives)

soan
 

soan

XLDnaute Barbatruc
Inactif
@SamSam84

ton fichier en retour. :)

j'ai fait c'qu'il faut pour le problème de ce sujet : « Changer cellule avec Double click », donc c'est pour les noms des Entreprises (en colonne BB "Réception des livraisons") ; pour ta demande supplémentaire concernant les copier / coller, c'est mieux que tu crées un autre sujet ; et je préfère ne pas m'en occuper car je n'aime pas trop le travail avec plus d'un fichier Excel (surtout si je ne les ai pas !) ; mais j'suis sûr qu'un autre intervenant pourra t'aider ; bonne chance ! 🍀

soan
 

Pièces jointes

  • Sites_Exemple.xlsm
    41.1 KB · Affichages: 4

soan

XLDnaute Barbatruc
Inactif
@SamSam84

tu as écrit : « Ha top, ca fonctionne super bien » ; merci pour ton retour ! 😊 mais tu as aussi écrit : « mais du coup j'ai d'autres fonctions qui ne fonctionnent plus 😅 » ; aïe ! c'est moins bien, ça ! :confused: mais j'trouve ça vraiment bizarre, car regarde le code VBA :​

VB:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

  Cancel = -1
  With Target
    If .CountLarge > 1 Then GoTo Suite
    Dim vx$: vx = .Value: If vx = "" Then GoTo Suite
    Dim chn$, lig&, col%: lig = .Row: If lig = 1 Then GoTo Suite
    col = .Column: If col < 42 Or col > 52 Or (col Mod 2 = 1) Then GoTo Suite
    chn = Cells(lig, 54)
    If InStr(chn, vx) = 0 Then chn = chn & " " & vx Else chn = Replace$(chn, vx, "")
    Cells(lig, 54) = LTrim$(chn): Exit Sub
  End With
 
Suite:

  'ici, y'a la suite de ton précédent code VBA

End Sub

pour les 4 lignes où tu vois GoTo Suite, « habituellement », je mets Exit Sub pour sortir de la sub ; mais là, justement, je fais un branchement à l'étiquette Suite: pour aller exécuter ton code VBA habituel ; les seules fois où on ne fait pas ce branchement, c'est quand ça exécute l'ajout ou la suppression d'une Entreprise dans le texte de la colonne BB "Réception des livraisons" ; cela car il y a Exit Sub sur cette ligne : Cells(lig, 54) = LTrim$(chn): Exit Sub.

j'espère que ces infos pourront t'aider à résoudre ton problème ; mais là, moi, je sèche ! :oops: c'est qu'c'est pas toujours facile d'intégrer un code VBA dans un autre ! il aurait fallu qu'je connaisse mieux ton projet, et qu'j'en sache plus sur ce que faisait avant cette sub Worksheet_BeforeDoubleClick().​

soan
 

SamSam84

XLDnaute Nouveau
@SamSam84

tu as écrit : « Ha top, ca fonctionne super bien » ; merci pour ton retour ! 😊 mais tu as aussi écrit : « mais du coup j'ai d'autres fonctions qui ne fonctionnent plus 😅 » ; aïe ! c'est moins bien, ça ! :confused: mais j'trouve ça vraiment bizarre, car regarde le code VBA :​

VB:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

  Cancel = -1
  With Target
    If .CountLarge > 1 Then GoTo Suite
    Dim vx$: vx = .Value: If vx = "" Then GoTo Suite
    Dim chn$, lig&, col%: lig = .Row: If lig = 1 Then GoTo Suite
    col = .Column: If col < 42 Or col > 52 Or (col Mod 2 = 1) Then GoTo Suite
    chn = Cells(lig, 54)
    If InStr(chn, vx) = 0 Then chn = chn & " " & vx Else chn = Replace$(chn, vx, "")
    Cells(lig, 54) = LTrim$(chn): Exit Sub
  End With

Suite:

  'ici, y'a la suite de ton précédent code VBA

End Sub

pour les 4 lignes où tu vois GoTo Suite, « habituellement », je mets Exit Sub pour sortir de la sub ; mais là, justement, je fais un branchement à l'étiquette Suite: pour aller exécuter ton code VBA habituel ; les seules fois où on ne fait pas ce branchement, c'est quand ça exécute l'ajout ou la suppression d'une Entreprise dans le texte de la colonne BB "Réception des livraisons" ; cela car il y a Exit Sub sur cette ligne : Cells(lig, 54) = LTrim$(chn): Exit Sub.

j'espère que ces infos pourront t'aider à résoudre ton problème ; mais là, moi, je sèche ! :oops: c'est qu'c'est pas toujours facile d'intégrer un code VBA dans un autre ! il aurait fallu qu'je connaisse mieux ton projet, et qu'j'en sache plus sur ce que faisait avant cette sub Worksheet_BeforeDoubleClick().​

soan

Bonjour Soan,

Oui en effet ton code répond parfaitement à ce que j'attendais pour la partie "double click entreprise", mais cela bloque certaines fonctionnalités que j'avais créé :

- "Permet de mettre date en double click" sur l'union de plage associé: cela me permet par le biais d'un double click de mettre la date du jour sur la plage donnée

- "Permet de mettre en vert quand commande validée" : avec un double click cela me met l'entreprise en vert lorsque j'ai validé la réception des livraison et ton code ajoute cette/ces entreprise(s) dans la colonne "réception des livraison"


Oui je me doute que c'est un peu difficile de se plonger dans le projet sans avoir toutes les infos, je pensais pouvoir adapter ton code au mien, mais je me suis surestimé 🤣
 

soan

XLDnaute Barbatruc
Inactif
Bonjour SamSam84,

j'ai trouvé c'qui bloque ! :) regarde cette ligne : If .CountLarge > 1 Then GoTo Suite

ça va à ton code initial seulement si la sélection actuelle comporte plus d'une cellule, PAS si UNE SEULE cellule est sélectionnée ! le problème, c'est que si une seule cellule est sélectionnée, il faut bien que ça exécute mon code des noms d'entreprises ! alors au lieu de sortir de la sub par Exit Sub quand mon code a été exécuté, il faut que ça continue quand même pour exécuter AUSSI ton code ! donc mea culpa, j'aurais pas dû mettre Exit Sub sur la ligne qui précède End With ! ce qui donne :
VB:
    Cells(lig, 54) = LTrim$(chn)
  End With

Suite:

j'avais pensé qu'mon code étant exécuté, c'était fini ! sans l'vouloir, j'ai joué perso, lollllllllll ! mais attention : ça veut dire que quand tu changes le contenu de la colonne BB "Réception des livraisons" par un double-clic sur une des cellules Entreprise qui sont à gauche, ça va aussi faire ce que tu as décrit dans ton dernier post #14 ; ce qui est normal pour « mettre en vert un nom d'entreprise », mais ça m'paraît bizarre pour la date ; comme je te disais, c'est ton projet, alors c'est toi qui vois. 😜

soan
 

Discussions similaires

Statistiques des forums

Discussions
314 654
Messages
2 111 598
Membres
111 215
dernier inscrit
fateh