Remplissage d'une celulle au clic

ILoveZadig

XLDnaute Occasionnel
Bonjour à tous, :)

Je souhaiterai que lorsque l'on clique sur une cellule d'une colonne, le contenu de la celulle juste à gauche vienne remplir la celulle sur laquelle on a cliqué.

Mon problème peut sembler difficile à expliquer, j'ai donc joint un fichier, car je n'ai pas trouvé ma réponse ailleurs.

Merci beaucoup pour vos réponses. :)
 

Pièces jointes

  • Help.xls
    19 KB · Affichages: 74
  • Help.xls
    19 KB · Affichages: 76
  • Help.xls
    19 KB · Affichages: 85

Hellowa

XLDnaute Junior
Re : Remplissage d'une celulle au clic

Bonjour,
J'ai trouvé ceci à l'adresse suivante:
fr Excel Re: Modifier la couleur d'une cellule par un click

Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As
Boolean)
If Target.Address <> "$A$10" Then Exit Sub
Application.EditDirectlyInCell = False
Select Case Target.Interior.ColorIndex
Case Is = xlNone 'rien
Target.Interior.ColorIndex = 4 ' vert
Case Is = 4 'vert
Target.Interior.ColorIndex = 3 'rouge
Case Is = 3 'rouge
Target.Interior.ColorIndex = xlNone
End Select
End Sub

Je l'ai modifiée, mais je n'arrive pas a l'appliquer...
Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'Macro crée par Hellowa pour le forum Excel-Download
'Cette macro fonctione sur un double click
Dim prec As Range
Application.EditDirectlyInCell = False
Select Case Target.Value
prec.Address = Target.Address(0, -1)
Case Is = "" 'Si la cellule est vide
Target.Value = prec.Value 'alors elle prend la valeur de la cellule précédente Valeur de la cellule précédente
Case Is = prec.Value 'Si elle a déjà la valeur de la précédente, elle redevient vide
Target.Value = ""
End Select
End Sub
Théoriquement celà fonctionne au double click.

En espérant que quelqu'un puisse t'aider mieux que moi!
Cordialement,
Bonne journée!
 

ILoveZadig

XLDnaute Occasionnel
Re : Remplissage d'une celulle au clic

Bonjour Hellowa, Risleure, le forum,

En effet, la solution de Risleure convient parfaitement pour répondre au premier problème. :)

Le souci est que je pense que je ne pourrai pas m'en servir. En effet, les utilisateurs devront fréquemment ajouter des lignes (je précise qu'ils font Copier puis Insérer les celulles copiées), or, j'ai modifié le code pour que cette macro ne s'applique qu'à 2 plages de cellules précises :
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("H47:H67")) Is Nothing Then
ActiveCell.Value = Cells((Target.Row), (Target.Column - 1)).Value
End If

If Not Intersect(Target, Range("I47:I67")) Is Nothing Then
ActiveCell.Value = Cells((Target.Row), (Target.Column - 2)).Value
End If

End Sub

Les problèmes sont que :
  • Lors de la sélection de plusieurs lignes entières (afin de les copier), la macro bug. On peut cliquer sur Fin, pour continuer à Insérer les cellules copiées, mais le niveau de ces utilisateurs étant encore plus faible que le mien, qui n'est déjà pas terrible. :eek:
  • Après avoir cliquer sur Fin puis l'insertion, la plage de cellules ne prend plus en compte les nouvelles lignzes ajoutées, et la macro ne donne donc plus rien.
Je ne sais pas si des solutions existent, mais merci en tout cas, je vais tout de même utiliser cette macro très utile.
 

ILoveZadig

XLDnaute Occasionnel
Re : Remplissage d'une celulle au clic

Re,

Parfait, pour l'ajout de la ligne, merci
Code:
On Error Resume Next
(ça semblait simple, mais j'ai oublié de préciser que je suis très mauvais en macro :eek:)

Mon autre problème est que quand on ajoute des lignes, les plages de cellules définies (H47:H67 et I47:I67) sont caduques.

Au départ, l'utilisateur doit cliquer pour reprendre le contenu de la cellule de la ligne 47 à 67. Mais si il ajoute 10 lignes, il pourra essayer de cliquer sur H75 et I75, cela ne donnera rien, car la macro ne prend pas en compte ces cellules.

Je précise que je préférerai éviter de faire :
Code:
If Not Intersect(Target, Range("H:H")) Is Nothing Then

La sélection de toute la colonne H (ou I) posera problème.

Ma question est de savoir si il est possible de rendre la macro "dynamique", je veux dire que si on ajoute 10 lignes, les plages de cellules passent de "H47:H67 et I47:I67" à "H47:H77 et I47:I77"

Merci beaucoup :)
 

Fo_rum

XLDnaute Accro
Re : Remplissage d'une celulle au clic

Salut,

à tester, avec double effet (quand elle est pleine, je la vide et quand elle est vide, ...)
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  Dim DerliG As Long
  If Target.Count > 1 Then Exit Sub
  DerliG = [G65536].End(xlUp).Row - 1
  If Not Intersect(Target, Range("H47:H" & DerliG)) Is Nothing Then
    Target = IIf(Target = "", Target.Offset(, -1), "")
    Target.Offset(, -1).Select
  End If
  If Not Intersect(Target, Range("I47:I" & DerliG)) Is Nothing Then
    Target = IIf(Target = "", Target.Offset(, -2), "")
    Target.Offset(, -2).Select
  End If
End Subb
Je n'avais pas lu les derniers messages ! Mais il n'est pas difficile de rectifier la macro.
Le fichier n'a pas été rectifi
é!
 

Pièces jointes

  • CopieEvennementielle.zip
    7.6 KB · Affichages: 39
Dernière édition:

ILoveZadig

XLDnaute Occasionnel
Re : Remplissage d'une celulle au clic

Bonjour à tous,

Merci Fo_rum pour ce complément de réponse. Voilà une partie du problème résolu! Mais c'est en exploitant ce fichier avec la macro que tu as proposée que j'ai remarqué un dernier problème. Je joins le fichier sur lequel il faut cette macro, avec les quelques petites modifications que j'y ai apporté.

La zone en jaune est la zone concernée par le "clic-remplissage". Le problème de l'ajout de lignes est résolu grâce à la macro de Fo_rum. Cependant, sur ce fichier, il y a également un suivi des recettes, au dessus.

La zone en jaune peut donc, si on ajoute 10 lignes dans le tableau du dessus, descendre, et passer de (H47:I67) à (H57:I77). La macro partant toujours de H47 et I47 n'est donc plus bonne. Existe t'il une solution à ce problème? :confused:

Ci-dessous le code du fichier :

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error Resume Next
  Dim DerliC As Long
  
  If Target.Count > 1 Then Exit Sub
  DerliC = [H65536].End(xlUp).Row - 1
  If Not Intersect(Target, Range("[COLOR="Red"][B]H47[/B][/COLOR]:H" & DerliC)) Is Nothing Then
    Target = IIf(Target = "", Target.Offset(, -1), "")
    Target.Offset(, -1).Select
  End If
  
  If Target.Count > 1 Then Exit Sub
  DerliC = [I65536].End(xlUp).Row - 1
  If Not Intersect(Target, Range("[COLOR="red"][B]I47[/B][/COLOR]:I" & DerliC)) Is Nothing Then
    Target = IIf(Target = "", Target.Offset(, -2), "")
    Target.Offset(, -2).Select
  End If

End Sub

Merci beaucoup pour vos réponses. :)
 

Pièces jointes

  • Clic.zip
    16.9 KB · Affichages: 26
  • Clic.zip
    16.9 KB · Affichages: 32
  • Clic.zip
    16.9 KB · Affichages: 32

Fo_rum

XLDnaute Accro
Re : Remplissage d'une celulle au clic

Re,

cela devrait suffire :
Code:
Dim Li As Long, DerliH As Long
Dim C As Range
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  If Target.Count > 1 Then Exit Sub
  '-----------Cherche Ligne de départ
  DerliH = [H65536].End(xlUp).Row
  For Each C In Range("H1:H" & DerliH) 'cherche le titre CR
    If C = "CR" Then
      Li = C.Row + 1
      Exit For
    End If
  Next
  '----------------------------------
  If Not Intersect(Target, Range("H" & Li & ":H" & DerliH - 1)) Is Nothing Then
    Target = IIf(Target = "", Target.Offset(, -1), "")
    Target.Offset(, -1).Select
  End If
  
  If Not Intersect(Target, Range("I" & Li & ":I" & DerliH - 1)) Is Nothing Then
    Target = IIf(Target = "", Target.Offset(, -2), "")
    Target.Offset(, -2).Select
  End If

End Sub
La ligne de départ est déterminée à partir d'un titre.
Remarque : une Zone de texte est plus facile à gérer (emplacement, taille, formats,...) qu'un ensemble de cellules fusionnées !
 

Pièces jointes

  • CopieSi(VBA).zip
    16.4 KB · Affichages: 35

ILoveZadig

XLDnaute Occasionnel
Re : Remplissage d'une celulle au clic

Re,

En effet, cela suffit! :)

Je vais essayer de réutiliser cette macro pour la zone fond bleu sur le fichier qui doit avoir les mêmes caractéristiques (je ne voulais pas trop en demander, c'est déjà énorme d'être aidé avec autant d'efficacité). J'espère que l'une ne va pas faire bugguer l'autre :p

Remarque : je ne pense jamais à utiliser de zone de texte, qui j'utilise uniquement sous Word (un réflexe, sans doute). J'essayerai d'y penser, si tu dis que c'est plus facile à gérer. Merci du conseil :)
 

Fo_rum

XLDnaute Accro
Re : Remplissage d'une celulle au clic

Re,

pour inclure le premier tableau, le raisonnement est identique à cela près qu'il faille chercher et la ligne de départ et la ligne d'arrivée de celui-ci.
Avec ton cas, il est heureux que tu ais une colonne de plus (ou de moins).
J'ai gardé la même structure pour t'éviter des ennuis d'analyse (VBA).
Vois si cela peut t'aider.
 

Pièces jointes

  • CopieSi2(VBA).zip
    14.1 KB · Affichages: 40

ILoveZadig

XLDnaute Occasionnel
Re : Remplissage d'une celulle au clic

Merci beaucoup, c'est parfait.
athome.gif


Je sous vraiment loin de ce niveau en VBA, je comprends à peine ce que tu as fait :)

Encore merci pour ton aide Fo_rum, et merci aussi à Risleure et Hellowa de s'être penché sur le problème. :)
 

Discussions similaires

Réponses
3
Affichages
385

Statistiques des forums

Discussions
312 558
Messages
2 089 596
Membres
104 220
dernier inscrit
Fredericchau