Créer deux feuilles identiques sur un même classeur et les lier.
Fermé
Boisdurouge
Messages postés
8
Date d'inscription
lundi 24 août 2020
Statut
Membre
Dernière intervention
30 août 2020
-
24 août 2020 à 07:15
Boisdurouge Messages postés 8 Date d'inscription lundi 24 août 2020 Statut Membre Dernière intervention 30 août 2020 - 30 août 2020 à 01:04
Boisdurouge Messages postés 8 Date d'inscription lundi 24 août 2020 Statut Membre Dernière intervention 30 août 2020 - 30 août 2020 à 01:04
A voir également:
- Créer deux feuilles identiques sur un même classeur et les lier.
- Créer un compte gmail - Guide
- Créer un compte google - Guide
- Créer un compte instagram sur google - Guide
- Créer un groupe whatsapp - Guide
- Comment creer un pdf - Guide
6 réponses
Mike-31
Messages postés
18346
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
13 novembre 2024
5 104
24 août 2020 à 07:31
24 août 2020 à 07:31
Bonjour,
place ce code dans un bouton activex par exemple et teste le
Cells.Copy
Sheets("Feuil2").Select
Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteFormats
Selection.PasteSpecial Paste:=xlPasteValues
Range("A1").Select
Application.CutCopyMode = False
place ce code dans un bouton activex par exemple et teste le
Cells.Copy
Sheets("Feuil2").Select
Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteFormats
Selection.PasteSpecial Paste:=xlPasteValues
Range("A1").Select
Application.CutCopyMode = False
franc38
Messages postés
197
Date d'inscription
mercredi 23 avril 2008
Statut
Membre
Dernière intervention
27 février 2023
38
24 août 2020 à 09:22
24 août 2020 à 09:22
Bonjour
Difficile de te répondre sans fichier
ajoute cette macro sur la feuille2
pour ce faire clic droit sur le nom de la feuille
choisir visualiser le code
changer With Sheets("Feuil1") si nom de la feuille1 est différent
changer [Tableau1] si le nom de ton tableau sur la feuille 1 est different
A+ François
Difficile de te répondre sans fichier
ajoute cette macro sur la feuille2
pour ce faire clic droit sur le nom de la feuille
choisir visualiser le code
Private Sub Worksheet_Activate()
Dim tablo, nblig As Long, nbcol As Integer
nblig = Range("A" & Rows.Count).End(xlUp).Row
nbcol = Cells(1, Columns.Count).End(xlToLeft).Column
Range(Cells(2, 1), Cells(nblig, nbcol)).ClearContents
With Sheets("Feuil1")
nblig = .[Tableau1].Rows.Count
nbcol = .[Tableau1].Columns.Count
tablo = .Range("Tableau1")
End With
Range(Cells(2, 1), Cells(nblig, nbcol)).Value = tablo
End Sub
changer With Sheets("Feuil1") si nom de la feuille1 est différent
changer [Tableau1] si le nom de ton tableau sur la feuille 1 est different
A+ François
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 779
Modifié le 24 août 2020 à 09:42
Modifié le 24 août 2020 à 09:42
Bonjour,
«J'aurais donc deux mêmes feuilles, et dès que je modifierais Feuil1, Feuil 2 s'actualiserais automatiquement»
C'est pas aussi simple que ça, il ne s'agit pas de copier les valeurs, il faut que chaque cellule soit liée à Feuil1 par une formule.
Met cette macro dans un module standard et exécutes la :
Tu peux ensuite supprimer la macro pour conserver un classeur sans macro.
«J'aurais donc deux mêmes feuilles, et dès que je modifierais Feuil1, Feuil 2 s'actualiserais automatiquement»
C'est pas aussi simple que ça, il ne s'agit pas de copier les valeurs, il faut que chaque cellule soit liée à Feuil1 par une formule.
Met cette macro dans un module standard et exécutes la :
Sub CreerDuplicata() Dim sh1 As Worksheet Dim sh2 As Worksheet Dim cel As Range Set sh1 = Worksheets("Feuil1") sh1.Copy After:=sh1 Set sh2 = ActiveSheet For Each cel In sh2.UsedRange.Cells If cel.Formula <> "" Then If IsNumeric(cel.Value) Then cel.Formula = "='" & sh1.Name & "'!" & cel.Address Else cel.Formula = "='" & sh1.Name & "'!" & cel.Address & " & """"" End If End If Next cel sh2.UsedRange.Cells.Locked = True End Sub
Tu peux ensuite supprimer la macro pour conserver un classeur sans macro.
Boisdurouge
Messages postés
8
Date d'inscription
lundi 24 août 2020
Statut
Membre
Dernière intervention
30 août 2020
24 août 2020 à 16:01
24 août 2020 à 16:01
Rebonjour.
Merci à tous pour votre aide.
Patrice33740, j'ai bien créé un module standard et utilisé ton code. Ça marche plutôt pas mal.
Je t'envoie le fichier (Excel 2007) pour que tu voies le résultat. La feuille 1 s'appelle "Lista de productos" (je vis en Argentine) et la deuxième feuille qui est le résultat de ton code, est la feuille 9, et s'appelle "Lista imprimible comerciantes". Ne fais pas attention à feuil3("Antigua lista comerciantes"), c'est un copier/coller que j'avais fait "à la main", mais elle permet quand même de voir le résultat que j'aimerais obtenir.
> Comme tu pourras le remarquer, dans la copie obtenue, les titres des entêtes ont été remplacés par des chiffres (exemple : numero par 1, "envasado" par 2, etc.).
>Et dès que j'essaie d'ajouter une ligne dans un des tableaux, ça ne se répercute pas sur la deuxième feuille(feuil9). (Exemple : feuil1 : je vais dans le premier tableau "Aceites", je clique sur la cellule A31, dans le cadre apparaissant j'utilise la poignée en bas à droite que je maintiens tout en la faisant glisser (j'utilise cette méthode car en faisant simplement "ajouter une ligne", l'incrémentation des indices ne se ferait pas .).
Merci.
Lien du fichier : https://www.cjoint.com/c/JHyn5Onrphs
Merci à tous pour votre aide.
Patrice33740, j'ai bien créé un module standard et utilisé ton code. Ça marche plutôt pas mal.
Je t'envoie le fichier (Excel 2007) pour que tu voies le résultat. La feuille 1 s'appelle "Lista de productos" (je vis en Argentine) et la deuxième feuille qui est le résultat de ton code, est la feuille 9, et s'appelle "Lista imprimible comerciantes". Ne fais pas attention à feuil3("Antigua lista comerciantes"), c'est un copier/coller que j'avais fait "à la main", mais elle permet quand même de voir le résultat que j'aimerais obtenir.
> Comme tu pourras le remarquer, dans la copie obtenue, les titres des entêtes ont été remplacés par des chiffres (exemple : numero par 1, "envasado" par 2, etc.).
>Et dès que j'essaie d'ajouter une ligne dans un des tableaux, ça ne se répercute pas sur la deuxième feuille(feuil9). (Exemple : feuil1 : je vais dans le premier tableau "Aceites", je clique sur la cellule A31, dans le cadre apparaissant j'utilise la poignée en bas à droite que je maintiens tout en la faisant glisser (j'utilise cette méthode car en faisant simplement "ajouter une ligne", l'incrémentation des indices ne se ferait pas .).
Merci.
Lien du fichier : https://www.cjoint.com/c/JHyn5Onrphs
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 779
24 août 2020 à 17:29
24 août 2020 à 17:29
Ça change totalement le cahier des charges !!!!
Il était question d' «une liste de produits avec une série de cellules isolées qui me permettent de modifier divers paramètres (valeurs de pourcentages, etc.). »
En supplément, tu demandes :
- d'ajouter des lignes sur la Feuil1
- de modifier certaines informations de la Feuil2 (par exemple les en-têtes)
Ça devient bien plus complexe :
- dans un premier temps, il faut créer la copie et la mettre au nouveau format pour les client (ce que permet la macro actuelle)
- ensuite il faut identifier les modifications sur la feuille 1:
>> si elle porte sur le contenu d'une cellule liée par formule : on ne fait rien (ça marche actuellement).
>> si elle porte sur le contenu d'une cellule pas encore liée par formule : on ajoute la formule sur la feuil2
-
il faut aussi détecter l'insertion de cellules (ou de lignes), ce qui ne va pas toujours être très simple et :
>> insérer les nouvelles cellules (ou lignes) sur la Feuil2
>> déterminer (c'est là que ça se corse) quel est le format à appliquer à ces nouvelles cellules (ou lignes)
>> lier ou pas ces nouvelles cellules à celles de la Feuil1
Il faut donc définir le cahier des charges avec une grande précision.
Il était question d' «une liste de produits avec une série de cellules isolées qui me permettent de modifier divers paramètres (valeurs de pourcentages, etc.). »
En supplément, tu demandes :
- d'ajouter des lignes sur la Feuil1
- de modifier certaines informations de la Feuil2 (par exemple les en-têtes)
Ça devient bien plus complexe :
- dans un premier temps, il faut créer la copie et la mettre au nouveau format pour les client (ce que permet la macro actuelle)
- ensuite il faut identifier les modifications sur la feuille 1:
>> si elle porte sur le contenu d'une cellule liée par formule : on ne fait rien (ça marche actuellement).
>> si elle porte sur le contenu d'une cellule pas encore liée par formule : on ajoute la formule sur la feuil2
-
il faut aussi détecter l'insertion de cellules (ou de lignes), ce qui ne va pas toujours être très simple et :
>> insérer les nouvelles cellules (ou lignes) sur la Feuil2
>> déterminer (c'est là que ça se corse) quel est le format à appliquer à ces nouvelles cellules (ou lignes)
>> lier ou pas ces nouvelles cellules à celles de la Feuil1
Il faut donc définir le cahier des charges avec une grande précision.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Boisdurouge
Messages postés
8
Date d'inscription
lundi 24 août 2020
Statut
Membre
Dernière intervention
30 août 2020
27 août 2020 à 19:48
27 août 2020 à 19:48
Bonjour Patrice,
Excuse-moi aussi pour les mauvaises indications, je ne savais que cela pouvait être si complexe. Dorénavant j'essaierai d'être plus exhaustif dans mes explications.
Je suis parvenu à réaliser la quasi totalité de ce que je voulais faire.
En fait je n'avais pas besoin que les deux feuilles soient liées , désolé. J'ai utilisé l'enregistreur de macro. Curieusement certaines fonctions étaient impossibles à automatiser comme redimensionner les largeurs de colonnes ou en cacher d' autres.
J'ai été sur quelques forums grappiller du code ça et là (j'ai absolument aucune base en VBA, mais comme je connais un peu le C, j'ai pu comprendre la logique de manière grossière.)
La macro "ImprimirListaComerciantes" se démarre avec le raccourci : ctrl + i
Un message de confirmation de suppression de la feuille existante apparaîtra et il faudra faire OK.
(Je n'ai pas réussi à le rendre automatique.)
J'ai placé des commentaires dans le code pour pouvoir voir les différentes étapes de la macro.
Il me reste cependant un problème. Lorsque la feuille principale("Lista de productos") a été finalement mise en forme("Lista comerciantes imprimible"), il faut lui apposer un bandeau d'informations (Le coin supérieur gauche du bandeau doit se confondre avec le coin supérieur gauche de la cellule A1.).
Ce bandeau d'information est présent dans la feuille "! NO MODIFICAR !"(Feuil8). J'ai essayé avec l'enregistreur de macro de d'abord faire une macro à part("CopierImage"), présente dans le module 3. Isolée, elle fonctionne. Mais je n'arrive pas à l'appeler dans le code de la macro "ImprimirListaComerciantes". (Call Module3.CopierImage?)
Donc, en somme, pour que la feuille soit utilisable, il faudrait :
> Pouvoir apposer le bandeau d'informations
> Cacher automatiquement les quatre dernières lignes sur les cinq qui séparent chaque tableau. Alors là, je sais qu'algorithmiquement ça doit être compliqué (Déterminer chaque tableau, pour chaque tableau déterminer la position de la dernière ligne n, puis cacher les lignes n+2, n+3,n+4,n+5.), si c'est trop dur, laisse-le, je me débrouillerai autrement.
> Passer la confirmation de suppression au tout début de la macro(Cette étape n'est pas indispensable, au pire je me débrouillerai).
> Déplacer l'onglet "Lista comerciantes imprimible" à la gauche de l'onglet "Lista imprimible comerciantes"( là aussi j'avais fait une macro isolée "DéplacerOnglet" que je ne sais pas appeler.)
Je sais que c'est beaucoup, alors fais ce que tu peux et veux.
PS : j'ai créé une feuille qui s'intitule "Exemple souhaité" pour avoir un aperçu du résultat.
Lien du fichier : https://www.cjoint.com/c/JHBrRPJ2eus
Excuse-moi aussi pour les mauvaises indications, je ne savais que cela pouvait être si complexe. Dorénavant j'essaierai d'être plus exhaustif dans mes explications.
Je suis parvenu à réaliser la quasi totalité de ce que je voulais faire.
En fait je n'avais pas besoin que les deux feuilles soient liées , désolé. J'ai utilisé l'enregistreur de macro. Curieusement certaines fonctions étaient impossibles à automatiser comme redimensionner les largeurs de colonnes ou en cacher d' autres.
J'ai été sur quelques forums grappiller du code ça et là (j'ai absolument aucune base en VBA, mais comme je connais un peu le C, j'ai pu comprendre la logique de manière grossière.)
La macro "ImprimirListaComerciantes" se démarre avec le raccourci : ctrl + i
Un message de confirmation de suppression de la feuille existante apparaîtra et il faudra faire OK.
(Je n'ai pas réussi à le rendre automatique.)
J'ai placé des commentaires dans le code pour pouvoir voir les différentes étapes de la macro.
Il me reste cependant un problème. Lorsque la feuille principale("Lista de productos") a été finalement mise en forme("Lista comerciantes imprimible"), il faut lui apposer un bandeau d'informations (Le coin supérieur gauche du bandeau doit se confondre avec le coin supérieur gauche de la cellule A1.).
Ce bandeau d'information est présent dans la feuille "! NO MODIFICAR !"(Feuil8). J'ai essayé avec l'enregistreur de macro de d'abord faire une macro à part("CopierImage"), présente dans le module 3. Isolée, elle fonctionne. Mais je n'arrive pas à l'appeler dans le code de la macro "ImprimirListaComerciantes". (Call Module3.CopierImage?)
Donc, en somme, pour que la feuille soit utilisable, il faudrait :
> Pouvoir apposer le bandeau d'informations
> Cacher automatiquement les quatre dernières lignes sur les cinq qui séparent chaque tableau. Alors là, je sais qu'algorithmiquement ça doit être compliqué (Déterminer chaque tableau, pour chaque tableau déterminer la position de la dernière ligne n, puis cacher les lignes n+2, n+3,n+4,n+5.), si c'est trop dur, laisse-le, je me débrouillerai autrement.
> Passer la confirmation de suppression au tout début de la macro(Cette étape n'est pas indispensable, au pire je me débrouillerai).
> Déplacer l'onglet "Lista comerciantes imprimible" à la gauche de l'onglet "Lista imprimible comerciantes"( là aussi j'avais fait une macro isolée "DéplacerOnglet" que je ne sais pas appeler.)
Je sais que c'est beaucoup, alors fais ce que tu peux et veux.
PS : j'ai créé une feuille qui s'intitule "Exemple souhaité" pour avoir un aperçu du résultat.
Lien du fichier : https://www.cjoint.com/c/JHBrRPJ2eus
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 779
Modifié le 30 août 2020 à 00:10
Modifié le 30 août 2020 à 00:10
Bonjour,
Avec un bouton sur la feuille Liste de produits (j'ai commenté chaque ligne de code) :
https://mon-partage.fr/f/VG5vtqZ9/
J'ai pas compris : « Déplacer l'onglet "Lista comerciantes imprimible" à la gauche de l'onglet "Lista imprimible comerciantes" »
Quand tu crées la copie tu peux la placer où tu veux (de ce cas avant la première) pourquoi la déplacer ?
Avec un bouton sur la feuille Liste de produits (j'ai commenté chaque ligne de code) :
https://mon-partage.fr/f/VG5vtqZ9/
J'ai pas compris : « Déplacer l'onglet "Lista comerciantes imprimible" à la gauche de l'onglet "Lista imprimible comerciantes" »
Quand tu crées la copie tu peux la placer où tu veux (de ce cas avant la première) pourquoi la déplacer ?
Boisdurouge
Messages postés
8
Date d'inscription
lundi 24 août 2020
Statut
Membre
Dernière intervention
30 août 2020
30 août 2020 à 00:55
30 août 2020 à 00:55
Bonjour Patrice,
Comme je cumule deux boulots, excuse mes réponses tardives.
Pardon je voulais dire Déplacer l'onglet "Lista comerciantes imprimible" à la gauche de l'onglet "Lista de productos".
"Lista de productos" est la feuille principale où on gère tous les prix, c'est pour ça que je voudrais l'avoir tout à gauche.
Merci de m'avoir répondu. "Lista comerciantes imprimible" est une feuille que je rafraîchirais à la volée après avoir modifié les prix (en Argentine, avec l'inflation, ça arrive très souvent.).
Comme je cumule deux boulots, excuse mes réponses tardives.
Pardon je voulais dire Déplacer l'onglet "Lista comerciantes imprimible" à la gauche de l'onglet "Lista de productos".
"Lista de productos" est la feuille principale où on gère tous les prix, c'est pour ça que je voudrais l'avoir tout à gauche.
Merci de m'avoir répondu. "Lista comerciantes imprimible" est une feuille que je rafraîchirais à la volée après avoir modifié les prix (en Argentine, avec l'inflation, ça arrive très souvent.).
Boisdurouge
Messages postés
8
Date d'inscription
lundi 24 août 2020
Statut
Membre
Dernière intervention
30 août 2020
>
Boisdurouge
Messages postés
8
Date d'inscription
lundi 24 août 2020
Statut
Membre
Dernière intervention
30 août 2020
30 août 2020 à 00:57
30 août 2020 à 00:57
Je viens de voir le résultat....ça tue! Merci beaucoup!
Boisdurouge
Messages postés
8
Date d'inscription
lundi 24 août 2020
Statut
Membre
Dernière intervention
30 août 2020
>
Boisdurouge
Messages postés
8
Date d'inscription
lundi 24 août 2020
Statut
Membre
Dernière intervention
30 août 2020
30 août 2020 à 01:04
30 août 2020 à 01:04