Lier deux cellules de différents feuilles / générer des feuilles gràace à une cellule

Imperium

XLDnaute Junior
Bonjour à tous !

Par avance, je vous remercie pour l'aide que vous allez m'apporter car elle me serait très précieuse. Je rencontre 2 problèmes un peu délicats, et malgré mes recherches, je ne trouve pas la solution. Je précise que je suis assez novice sur Excel.

Problème 1 : Un document Excel avec plusieurs feuilles. Sur la feuille A, une cellule d'un tableau, et sur la feuille B, une cellule que j'aimerai remplir automatiquement avec ce qui est marqué dans A ! Comment-faire ?

Problème 2, plus coriace je pense : J'ai plusieurs feuilles, A B et C. J'aimerai que quand une certaine cellule de A est remplie (choix déroulant d'une cellule sur "oui" par exemple, ça je sais faire :) ), la feuille C soit dédoublée dans le classeur. Qu'en gros le remplissage d'une cellule créé une feuille nouvelle dans le classeur qui soit en réalité la copie d'une feuille existante.

J'espère avoir été clair :) Merci d'avance.
 

Pierre-Henry

XLDnaute Junior
Re : Lier deux cellules de différents feuilles / générer des feuilles gràace à une ce

Bonsoir,
Regarde le fichier joint, et dis-nous si ça te convient.....
Un exemple de lien vers une cellule d'une autre feuille en E9
Si tu sélectionnes "oui" en A2, la feuille Feuil3 est dupliquée et mise à la fin du classeur....

N'hésite pas à revenir!

Cordialement
 

Pièces jointes

  • Imperium.xls
    34 KB · Affichages: 1 042
  • Imperium.xls
    34 KB · Affichages: 1 071
  • Imperium.xls
    34 KB · Affichages: 1 071

Imperium

XLDnaute Junior
Re : Lier deux cellules de différents feuilles / générer des feuilles gràace à une ce

GENIAL ! Ca marche et c'est exactement ce que je veux faire.
Comment puis-je manipuler cela ? Si j'ai bien compris, c'est une macro ? Comment marche-t-elle afin que je puisse l'adapter à mon document ?
 

Pierre-Henry

XLDnaute Junior
Re : Lier deux cellules de différents feuilles / générer des feuilles gràace à une ce

Bonsoir,
Voila une explication détaillée de la macro....n'hésite pas à demander si tu n'arrives pas à "l'adapter".
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
[COLOR="Green"]' Workbook_Change correspond à l'évènement "changement du contenu d'une cellule" (pour la feuille dans laquelle le code est placé)
' L'argument de la fonction est l'adresse de la cellule qui a été modifiée (nommé Target ici, et de type Range)[/COLOR]
    If Target = Range("A2") Then
[COLOR="Green"]'La je vérifie que c'est bien la cellule A2 qui a été modifiée.
'Sans ce test, à chaque fois que l'on change le contenu d'une cellule, si on a "oui" en A2, la Feuil3 serait dupliquée[/COLOR]
        If Target.Value = "oui" Then
[COLOR="Green"]'On vérifie que ce soit bien "oui" dans la cellule Target (qui est donc nécessairement A2 d'après le test précédent)
'On aurait pu mettre   > If Range("A2").Value = "oui" Then < qui aurait peut-être été plus explicite....[/COLOR]
            Sheets("Feuil3").Copy After:=Sheets(ThisWorkbook.Worksheets.Count)
[COLOR="Green"]'Enfin si les 2 tests précédents sont vérifiés, on copie la Feuil3, et on la colle en dernière position
'ThisWorkbook.Worksheets.Count correspond au nombre de feuilles du classeur....il faut lire à l'envers en fait....
'Compter (count).Les Feuilles (worksheets).du classeur (workbook)
'ThisWorkbook correspond au classeur qui contient la macro (à ne pas confondre avec ActiveWorkbook = classeur actif)[/COLOR]
        End If
    End If
End Sub

Cordialement
 
Dernière édition:

Imperium

XLDnaute Junior
Re : Lier deux cellules de différents feuilles / générer des feuilles gràace à une ce

Merci énormément. J'ai bien réussi à adapter la macro et cela marche nickel.

Je vais abuser de ta gentillesse et te demander si autre chose est possible.

La nouvelle feuille créée peut-elle porter un nom différent, contenu dans une cellule d'une autre feuille du classeur par exemple ?

Merci d'avance :)
 

Pierre-Henry

XLDnaute Junior
Re : Lier deux cellules de différents feuilles / générer des feuilles gràace à une ce

Bonsoir,
Bien sûr que c'est possible :)
En partant du principe que la feuille nouvellement crée est la feuille active, il "suffit" (facile à dire n'est-ce pas....) de rajouter la ligne suivante
Code:
ActiveSheet.Name = Sheets("Feuil2").Range("B6")
(avant le 1er End If)....Pour donner comme nom ce qui est en B6 de Feuil2 bien sûr ;)

Sur le même principe, si le nom de la feuille que tu veux copier est en B3 de Feuil2, alors tu peux écrire
Code:
Sheets(Sheets("Feuil2").Range("B3")).Copy After:=Sheets(ThisWorkbook.Worksheets.Count)

Facile, non? :D

A bientôt

Cordialement
 

Imperium

XLDnaute Junior
Re : Lier deux cellules de différents feuilles / générer des feuilles gràace à une ce

waaa Génial ! Merci énormément !
Même si... je me suis mal exprimé, c'est de ma faute !

C'est tout à fait ce que je veux faire, sauf qu'en fait le nom a donner a la nouvelle feuille n'est jamais le même (il y a plusieurs ligne dans mon tableau créateur de nouvelle feuille). En gros tous les noms possibles sont dans une seule colonne, et le nom est choisi (et la nouvelle feuille créée) en fonction de la ligne validée par "oui". Tu vois ce que je veux dire ? :(

En tous les cas merci énormément pour ton aide.
 

Pierre-Henry

XLDnaute Junior
Re : Lier deux cellules de différents feuilles / générer des feuilles gràace à une ce

Bonsoir,
Désolé, j'ai raté ton dernier message.....j'espère qu'il n'est pas trop tard!
Voici un code qui fonctionne à peu près....je vais détailler les quelques bugs après....si une tierce personne passe par ici, une solution serait fortement appréciée ;)

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not (Application.Intersect(Range("B3:B20"), Target) Is Nothing) Then
        If Target.Value = "oui" Then
            Sheets("Feuil3").Copy After:=Sheets(ThisWorkbook.Worksheets.Count)
            ActiveSheet.Name = Target.Offset(0, -1).Value
        End If
    End If
End Sub

Quelques explications : Application.Intersect donne l'intersection de 2 plages....vérifier qu'elle est non vide (Not(..... Is Nothing)) revient ici à vérifier que Target (revoir les messages précédents) est entre B3 et B20....à adapter selon tes données.

ActiveSheet.Name = Target.Offset(0, -1).Value : Je donne comme nom à la feuille active (qui est donc la feuille nouvellement créée) le contenu (Value) de la cellule qui se trouve en "Offset(0,-1)" de Target, soit sur la même ligne (le 0), et dans la colonne précédente (le -1)...pareil, n'ayant pas ton fichier, je te laisse adapter selon tes besoins!

Voici le bug (que je ne sais pas résoudre....)
Si on modifie plusieurs cellules, dont au moins une entre B3 et B20 (en sélectionnant non pas une cellule mais une plage par exemple), on a une "Incompatibilité de type" sur le Target.Value

Il y a éventuellement la possibilité suivante :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not (Application.Intersect(Range("B3:B20"), Target) Is Nothing) Then
        On Error Goto ErreurPlage
        If Target.Value = "oui" Then
        On Error GoTo 0
            Sheets("Feuil3").Copy After:=Sheets(ThisWorkbook.Worksheets.Count)
            ActiveSheet.Name = Target.Offset(0, -1).Value
        End If
    End If
ErreurPlage:
End Sub

Mais je trouve que ce n'est pas du jeu :p Non, sérieusement je voulais savoir s'il y avait un moyen plus joli?

Allez, j'arrête ici mon roman, Imperium n'hésite pas à revenir en cas de besoin!
Bonne soirée à tous

Cordialement
 

Pièces jointes

  • Imperium2.xls
    36 KB · Affichages: 179

Staple1600

XLDnaute Barbatruc
Re : Lier deux cellules de différents feuilles / générer des feuilles gràace à une ce

Bonsoir


Pierre-Henry
Comme cela ?

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not (Application.Intersect(Range("B3:B20"), Target) Is Nothing) [COLOR=Blue][B]And Target.Count = 1 [/B][/COLOR]Then
If Target.Value = "oui" Then
Sheets("Feuil3").Copy After:=Sheets(ThisWorkbook.Worksheets.Count)
ActiveSheet.Name = Target.Offset(0, -1).Value
End If
End If
End Sub
 

Imperium

XLDnaute Junior
Re : Lier deux cellules de différents feuilles / générer des feuilles gràace à une ce

Désolé j'étais en déplacement mais je vais regarder ça de plus près.

MERCI INFINIMENT à tous les deux d'avoir pris le temps de m'aider. C'est vraiment super sympa.
 

Imperium

XLDnaute Junior
Re : Lier deux cellules de différents feuilles / générer des feuilles gràace à une ce

CA MARCHE !

Vous êtes géniaux et vous ne pouvez pas imaginer à quel point cette macro va faciliter ma vie professionnelle ;)

Avant, il me fallait créer chaque nouvelle fiche manuellement, renseigner le nom en copier/coller... Mais là c'est vraiment idéal !

Merci, merci ! Et particulièrement merci à toi Pierre Henry qui suit mon dossier depuis le début ;)
 

Imperium

XLDnaute Junior
Re : Lier deux cellules de différents feuilles / générer des feuilles gràace à une ce

Bonjour à tous,

J'espère que le fait que je poste une troisième fois d'affilée ne pose aucun problème.

Mais en fait, je vais me permettre d'abuser encore de votre gentillesse et de votre précieuse aide.

Me voilà donc avec ma feuille automatiquement créée (sous la condition que la cellule en feuille 1 soit sur "oui"), et qui porte le nom entré dans l'une des cellule de la feuille 1 (et ce nom dépend de la ligne sur laquelle le "oui" a été entré :) ).

Ce que je voudrai, c'est que sur cette nouvelle feuille créée, il y ait une cellule qui soit remplie avec le nom de cette nouvelle feuille (ou avec le nom qui se trouve dans l'une des cellules de la feuille 1 qui est le même).

Est-ce possible ? Et si oui quel est le script a entrer ?

Merci, encore une fois, infiniment.
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 105
Messages
2 085 350
Membres
102 871
dernier inscrit
Maïmanko