Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

copie de variable sur 2 feuilles différentes

  • Initiateur de la discussion Initiateur de la discussion dsbwl
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

D

dsbwl

Guest
Bonjour,
dans ma 1ère feuille j'ai un tableau avec en colonne A des dates et en ligne 1 le nom de mes collaborateurs.
Sur ma 2ème feuille j'ai toujours mes dates en colonne "A" mais "S ou A" sur la ligne 1
Dans ma feuille 1, je rempli "S" ou "A" ou vide selon mes besoins.
Je voudrais que le nom de mon collaborateur qui a "S" ou "A" à une date donnée se retrouve dans la bonne colonne de la feuille 2 .
Merci de votre aide
Je vous mets mon fichier en PJ pour mieux exprimer mon besoin
 

Pièces jointes

Re : copie de variable sur 2 feuilles différentes

Salut dsbwl et le forum
Feuil2 :
en B2 :
Code:
=SI(ESTNA(RECHERCHE(B$1;Feuil1!$B2:$H2;Feuil1!B$1:H$1));"";RECHERCHE(B$1;Feuil1!$B2:$H2;Feuil1!B$1:H$1))
À copier sur toutes les cellules concernée de Feuil2.
Ça nécessite quelques conditions :
- les 2 colonnes A sont identiques
- sur Feuil1, par ligne tu ne peux avoir qu'un S ou un A

Explications succintes de la formule. :
B$1 : la référence évolue avec la ligne, mais pas avec la colonne
$B2 : la référence évolue avec la colonne, mais pas avec la ligne

estna() est vrai quand la recherche ne trouve rien de correspondant, et le si permet de renvoyer ""
A+
 
Re : copie de variable sur 2 feuilles différentes

Bonjour consonnes, bonjour le forum,

En pièce jointe ton fichier modifié avec les macro événementielles Selection_Change et Change. La première permet de mémoriser la valeur avant un éventuel effacement et la seconde permet de répercuter le nom du collaborateur dans l'onglet Feuil2. Le code est commenté...
Les macros :
Code:
Private pl As Range 'déclare la variable pl (PLage)
Private vi As String 'déclare la variable vi (Valeur Initiale)
 
Private Sub Worksheet_SelectionChange(ByVal Target As Range) 'au changement de sélection
Set pl = Range("A1").CurrentRegion 'définit la plage pl
Set pl = pl.Offset(1, 1).Resize(pl.Rows.Count - 1, pl.Columns.Count - 1) 'redéfinit la plage pl
'si la cellule sélectionnée ne fait pas partie de la plge pl, vi est vide, sort de la procédure
If Application.Intersect(Target, pl) Is Nothing Then vi = "" : Exit Sub
vi = Target.Value 'définit la valeur initiale de la cellule
End Sub
 
Private Sub Worksheet_Change(ByVal Target As Range) 'à l'édition dans une cellule
Dim nc As String 'déclare la variable nc (Nom du Collaborateur)
Dim d As Date 'déclare la variable d (Date)
Dim col As Byte 'déclare la variable col (COLonne)
Dim r As Range 'déclare la variable r (Recherche)
 
Set pl = Range("A1").CurrentRegion 'définit la plage pl
Set pl = pl.Offset(1, 1).Resize(pl.Rows.Count - 1, pl.Columns.Count - 1) 'redéfinit la plage pl
'si la cellule sélectionnée ne fait pas partie de la plge pl, sort de la procédure
If Application.Intersect(Target, pl) Is Nothing Then Exit Sub
 
Select Case UCase(Target.Value) 'agit en fonction du cas de la valeur éditée (accepte aussi les minuscules)
    Case "S" 'cas "s" ou "S"
        col = 2 'définit la colonne
    Case "A" 'cas "a" ou "A"
        col = 3 'définit la colonne
    Case "" 'cas vide (cellule effacée)
        col = IIf(vi = "S", 2, 3): nc = "" 'définit la colonne, définit nc (vide)
    Case Else 'tous les autres cas
        Exit Sub 'sort de la procédure
End Select 'fin de l'action en fonction de ...
 
If Target.Value <> "" Then nc = Cells(1, Target.Column) 'si nc la cellule n'est pas effacée, définit la variable nc
d = CDate(Cells(Target.Row, 1)) 'définit la date
With Sheets("Feuil2") 'prend en compte l'onglet "Feuil2"
    Set r = .Columns(1).Find(d, .Range("A1"), xlFormulas, xlWhole) 'dérfinit la recherche r
    'si il existe au moins une occurrence, place dans la colonne col et la ligne de la date, la variable nc
    If Not r Is Nothing Then .Cells(r.Row, col).Value = nc
End With 'fin de la prise en compte de l'onglet "Feuil2"
End Sub

[Édition]
Bonjour Gorfael on s'est croisé. au moins consonne aura les deux solutions Formules et vba..
 

Pièces jointes

Dernière édition:
Re : copie de variable sur 2 feuilles différentes

Merci beaucoup à vous deux.
Pour Gorfael, même si au départ je préférais la formule, malheureusement j'aurais systématiquement S et A sur une même ligne. Je vais essayé dès demain de faire évoluer la formule pour avoir les 2 valeurs.
Pour Robert, une première visualisation de la macro semble donner un résultat encore meilleur qu’attendu ( en effet, si je mets 2 S ou 2A dans ma ligne, seule une variable sera pris en compte: cela m'éviteras pas mal de tracas).
Vraiment merci à vous deux et bon weekend 😉
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

R
  • Question Question
Réponses
3
Affichages
114
regis6460
R
Réponses
3
Affichages
170
Réponses
12
Affichages
366
Réponses
15
Affichages
791
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…