Prendre une référence unique à partir d'une autre feuille + c/c données

Je fais appel à vous car suite à plusieurs recherches et tests je n'arrive pas à trouver une solution.

Je vous explique ce que j'aimerai faire , j'ai plusieurs feuilles pour différentes personnes + 1 feuille Liste :

Je souhaite en sélectionnant une ligne (ou si possible avoir une liste déroulante avec le n° de lign) et en cliquant sur le bouton "Ajouter nouvelle réf" => je puisse récupérer la dernière valeur dans la feuille Liste dans la colonne A.

Une fois cela réalisé ce sera déjà super...

Ensuite je souhaite pousser la demande plus loin : càd, une fois cette référence prise, je souhaite dans l'autre sens copier les données de la feuille Pierre vers la feuille Liste et coller les infos dans les colonnes B et C

Et ce n'est pas fini.... Je souhaite incrémenter la valeur de la colonne A de la feuille Liste une fois B (nom de la feuille d'origine) et C (concaténation de plusieurs données) remplis!

Je sais qu'il y a bcp de demandes... j'aimerai svp avoir le support de qlq'un qui connait et m'aider pas à pas à réaliser et surtout comprendre.

Je joins un fichier pour la demande.

UN ENORME MERCI D'AVANCE

Salut,

Je pense qu'il y a encore bien des choses à améliorer, mais regarde déjà si la proposition ci-jointe va dans le sens voulu.

Cordialement.

Bonjour j'espère que ca répond à vos besoins.

Cordialement

bonjour ak_el, Salut Yvouille, ghisnob,

2 macros, la "Ajouter_ref" qui fait ce que vous avez demandé et la "Nouvelle_Ref" qui fontionne sans intervention.

Il y a une colonne supplémentaire "Ligne" pour savoir la bonne ligne dans chaque feuille (si plus tard, vous commencez à insérer ou supprimer des lignes dans vos feuilles).

PS. des tableaux structurés pouvaient améliorer tout

UN ENORME MERCI A VOUS TOUS

ça fonctionne très bien!!!

Je profite de votre support et votre générosité de partage de votre savoir

en effet je souhaite copier plusieurs lignes d'un onglet par exemple "Pierre" et les coller dans un onglet "synthèse" à la suite (à la 1ère ligne vide) sans écraser les données déjà existantes.

Par avance merci

re,

j'ai renommé la feuille "Synthèse", maintenant c'est "Synthese", sans accent parce que mon editeur VBA a des problèmes avec ces accents. Si cela vous embête, vous pouvez la renommer de nouveau, mais il faut aussi modifier son nom dans la macro.

Maintenant, quand vous êtes sur une ligne et vous lancez la macro (en poussant le bouton ou avec le raccoursi CTRL+SHIFT+S), la ligne sera copié& collée vers "synthese". Si vous voulez plusieurs lignes en même temps, maintenez la touche CTRL et cliquez une cellule dans les colonnes A:F de chaque ligne que vous voulez copier&coller, puis lachez le bouton CTRL et lancez la macro. Les doublons seront supprimés.

Merci bcp BsAlv, tu es le best

ça marche comme je le souhaitais!!!

Une dernière demande (je sais j'abuse un peu)

Mais stp j'essaie de comprendre le code pour l'utiliser pour différentes application (exple : nom de feuille / colonnes à copier / .. différents)

et je bloque sur certaines lignes de code, si tu peux stp mettre des commentaires sur les lignes pour bien comprendre ce qu'elles réalises exactement

Exemple :

1/ je cherche la ligne de code qui renvoie le nom de la feuille, je pense que celle-ci : "c.Offset(, 1).Value = ActiveSheet.Name" mais je n'arrive pas à la personnaliser (càd l'afficher dans une autre colonne au lieu de la B)

2/ .Cells(1, 3).FormulaR1C1 =... je n'arrive pas à les personnaliser pour les afficher sur d'autres colonnes, quand je change le "3" et mettre "4" cela me décale toutes les cellules

ENORME MERCI

re,

j'ai ajouté des commentaires, j'éspère que cela suffit, sinon, il faut le dire.

remarque, quand vous insérez une colonne et comme çà vous déplacez les colonnes avec des formules, la plus facile méthode pour vous, c'est utiliser l'enregistreur des macros et selectionnez une cellule déplacée avec la formule, faites F2 et puis enter. Arrêtez l'enregistreur et cherchez la macro enregistrée. Ici dessous vous voyez un exemple. les premières lignes, on se met dans les cellules C2 et puis D2 et j'ai fait la manipulation d'ici dessus, donc le bouton "F2" et puis "Enter" et l'enregistreur est bien enregistré les 2 formules. Puis la macro a inséré 2 nouvelles colonnes avant colonne C (comme exemple, si vous avez besoin de plus ou moins de colonnes ...), donc les anciennes C:D sont maintenant E:F. Puis j'ai de nouveau fait ce manip de "F2" et "enter" dans les cellules E2 et F2. L'astuce est maintenant de copier cette nouvelle formule dans la macro.

Sub Macro6()
'
' Macro6 Macro
'

'
    Range("C2").Select
    ActiveCell.FormulaR1C1 = _
        "=IF(RC[-1]="""","""",IFERROR(TEXTJOIN("" / "",0,INDIRECT(""'"" & RC[-1]&""'!B""&RC[1]),INDIRECT(""'"" & RC[-1]&""'!C""&RC[1]),INDIRECT(""'"" & RC[-1]&""'!F""&RC[1])),""???""))"
    Range("D2").Select
    ActiveCell.FormulaR1C1 = _
        "=IFERROR(MATCH(RC[-3],INDIRECT(""'""&RC[-2]&""'!E1:E100""),0),""-"")"

Columns("C:D").Select
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove

    Range("E2").Select
    ActiveCell.FormulaR1C1 = _
        "=IF(RC[-3]="""","""",IFERROR(TEXTJOIN("" / "",0,INDIRECT(""'"" & RC[-3]&""'!B""&RC[1]),INDIRECT(""'"" & RC[-3]&""'!C""&RC[1]),INDIRECT(""'"" & RC[-3]&""'!F""&RC[1])),""???""))"
    Range("F2").Select
    ActiveCell.FormulaR1C1 = _
        "=IFERROR(MATCH(RC[-5],INDIRECT(""'""&RC[-4]&""'!E1:E100""),0),""-"")"
    Range("G2").Select
End Sub

bon, ici dessous, on a "AVANT", c'est ici (en rouge) la formule enregistrée pour la colonne C de "Liste" dans ma macro de cette après-midi. Maintenant vous avez voulu insérer 2 colonnes de manière que la colonne C est maintenant la colonne E.

premier correction : Vous voyez que j'ai modifié le "3" de .cells(1,3)).formular1c1 en 5, okay ?

2eme correction : j'ai remplacé la formule rouge par la nouvelle formule que vous venez d'enregistrer. Si vous vérifiez les 2 formules, vous voyez des petits correction, mais pour vous, c'est plus simple de remplacer l'ancienne formule par la nouvelle formule, au lieu de l'essayer à créer vous-même.

Compris ???

AVANT

.Cells(1, 3).FormulaR1C1 = "=IF(RC[-1]="""","""",IFERROR(TEXTJOIN("" / "",0,INDIRECT(""'"" & RC[-1]&""'!B""&RC[1]),INDIRECT(""'"" & RC[-1]&""'!C""&RC[1]),INDIRECT(""'"" & RC[-1]&""'!F""&RC[1])),""???""))" 'formule dans la colonne C

APRES

.Cells(1, 5).FormulaR1C1 = "=IF(RC[-3]="""","""",IFERROR(TEXTJOIN("" / "",0,INDIRECT(""'"" & RC[-3]&""'!B""&RC[1]),INDIRECT(""'"" & RC[-3]&""'!C""&RC[1]),INDIRECT(""'"" & RC[-3]&""'!F""&RC[1])),""???""))"

Merci bcp BsAlv,

OUi j'ai bien compris merci pour l'explication, en effet j'avais tenté de faire la même chose mais j'ai dû me tromper dans les RC[x]

Je continue à faire appel à vos connaissances!!!

je souhaite perfectionner mon fichier mais je bloque bcp...

En effet je souhaite en ouvrant un userform, choisir la plage des lignes à copier (choisir les n de lignes)

choisir le nom de feuille vers laquelle je souhaite coller les données (je pourrais avoir plusieurs feuilles)

j'espère avoir été claire dans mon expression du besoin.

par avance merci

re,

je n'ai pas tout compris, mais ceci est un essai

bonjour,

A+

Oui désolé c'est fait, je suis absent en ce moment à cause des congés.

Merci à tous pour votre aide.

Je reprendra prochainement pour l'amélioration de mon fichier, et j'aurai certainement besoin de votre précieuse aide

Rechercher des sujets similaires à "prendre reference unique partir feuille donnees"