XL 2021 copier en B7 la valeur de la cellule active (Cells(ActiveCell.Row, 7)) de la feuille "Appels"

Usine à gaz

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

Le titre dit tout mon besoin (enfin, je pense).
Formule ou vba je n'y arrive pas.

Voudriez-vous m'aider ?

Grand merci à toutes et à tous
Je joins le petit fichier test et je continue mes recherches...
:)
 

Pièces jointes

  • Colle val cel active autre feuille.xlsm
    37 KB · Affichages: 7
Dernière édition:
Solution
Bonsoir Lionel, sylvanu,

Utiliser ici une variable Public n'est pas une bonne idée.

Placez plutôt cette macro dans le code de la feuille "Mon besoin" :
VB:
Private Sub Worksheet_Activate()
Application.ScreenUpdating = False
Application.EnableEvents = False
With Sheets("Appels")
    .Activate
    [B7] = .Cells(ActiveCell.Row, 7)
End With
Me.Activate
Application.EnableEvents = True
End Sub
Elle se déclenche quand on active la feuille.

A+

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Lionel,
Peut être avec dans feuille Appels :
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Count > 1 Then Exit Sub
    Sheets("Mon besoin").[B7] = Target
End Sub
Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count > 1 Then Exit Sub
    Sheets("Mon besoin").[B7] = Target
End Sub
Le premier cas si on clique sur une cellule.
Le second cas si on modifie une valeur.
 

Pièces jointes

  • Colle val cel active autre feuille.xlsm
    41.5 KB · Affichages: 3

job75

XLDnaute Barbatruc
Bonjour Lionel, sylvanu,

Place dans le code de la feuille Appels :
VB:
Private Sub Worksheet_Deactivate()
Dim F As Object
Set F = ActiveSheet
Application.ScreenUpdating = False
Application.EnableEvents = False
Me.Activate
Sheets("Mon besoin").[B7] = Cells(ActiveCell.Row, 7)
F.Activate
Application.EnableEvents = True
End Sub
A+
 

job75

XLDnaute Barbatruc
Evidemment si l'on ne va jamais sur la feuille Appels la cellule B7 ne se remplira pas.

On peut alors ajouter ce code dans ThisWorkbook :
VB:
Private Sub Workbook_Open()
Dim F As Object
Set F = ActiveSheet
Application.ScreenUpdating = False
Sheets("Appels").Activate
F.Activate
End Sub
 

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Merci gérard :)
Mais lol :
En fait, je n'avais pas donné tout le contexte car je pensais qu'un code dans la feuille "Mon besoin" pourrait s'exécuter à la sélection de la feuille.

Le but du code est de récupérer (à l'activation de la feuille "Mon besoin") et en B7 la valeur de la cellule active (Cells(ActiveCell.Row, 7)) de la feuille "Appels"

si on reste sur le code de Gérard, il suffirait d'ajouter la condition que le code ne s'exécute qu'uniquement si c'est la feuille "Mon besoin" qui est activée (donc ne s'exécute pas si une autre feuille est activée).

Code dans la feuille "Appels"
VB:
Private Sub Worksheet_Deactivate()
[B][U]condition : le code s'exécute uniquement si la feuille "Mon besoin" est activée[/U][/B]
Dim F As Object
Set F = ActiveSheet
Application.ScreenUpdating = False
Application.EnableEvents = False
Me.Activate
Sheets("Mon besoin").[B7] = Cells(ActiveCell.Row, 7)
F.Activate
Application.EnableEvents = True
End Sub

Je remets le fichier avec des onglets en + et j'essaie de voir comment coder la condition.
:)
 

Pièces jointes

  • Colle val cel active autre feuille.xlsm
    45.7 KB · Affichages: 1

sylvanu

XLDnaute Barbatruc
Supporter XLD
Re,
voilà le fil le plus court de "ma carrière d'usine à gaz"
Ca m'étonnais aussi ! 😂

Un essai en PJ avec :
Module standard :
VB:
Public AppelsActiveCell
Feuille Appels :
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Count > 1 Then Exit Sub
    AppelsActiveCell = Cells(ActiveCell.Row, 7)
End Sub
Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count > 1 Then Exit Sub
    AppelsActiveCell = Cells(ActiveCell.Row, 7)
End Sub
Feuille Besoin :
Code:
Sub Worksheet_Activate()
    [B7] = AppelsActiveCell
End Sub
 

Pièces jointes

  • Colle val cel active autre feuille (2).xlsm
    44 KB · Affichages: 2

job75

XLDnaute Barbatruc
Bonsoir Lionel, sylvanu,

Utiliser ici une variable Public n'est pas une bonne idée.

Placez plutôt cette macro dans le code de la feuille "Mon besoin" :
VB:
Private Sub Worksheet_Activate()
Application.ScreenUpdating = False
Application.EnableEvents = False
With Sheets("Appels")
    .Activate
    [B7] = .Cells(ActiveCell.Row, 7)
End With
Me.Activate
Application.EnableEvents = True
End Sub
Elle se déclenche quand on active la feuille.

A+
 

Pièces jointes

  • Colle val cel active autre feuille.xlsm
    42.9 KB · Affichages: 2

Discussions similaires

Statistiques des forums

Discussions
312 214
Messages
2 086 311
Membres
103 175
dernier inscrit
abcc