Dupliquer X feuille Excel en 1 clic
C'est à dire ? Je ne vois pas de quoi vous parlez
Finalement c'est bon :) Je ne sais pas pourquoi ça me marchait pas... Merciiii
Ce n'est pas compliqué. Faites ceci :
- Allez dans le module Define
- Modifiez ces deux lignes en remplaçant le 8 et le 45 par 15 et 53
Ah oui ! Je suis bête ! Merciii
Vous pouvez donner un exemple car je ne vois de quelle colonne vous parlez en ligne 8
Donc en fait dans ma feuille SD je dois la ligne 8 est différente que la feuille "mère"
Feuille SD :
Feuille "mère" :
Merciii
Donc en fait dans ma feuille SD je dois la ligne 8 est différente que la feuille "mère"
Normal car votre formule ne fait pas référence à la même cellule ou plutot ligne. D'un coté vous S39 et de l'autre vous avez S40
Vous devez avoir quoi ?
Normal car votre formule ne fait pas référence à la même cellule ou plutot ligne. D'un coté vous S39 et de l'autre vous avez S40
Vous devez avoir quoi ?
Désolée je me suis mal exprimée.
En fait je souhaite que chaque feuille SD reprenne ce qui a dans sa feuille "mère". Exemple :
Feuille 1 = Feuille SD1 à l'exception de ligne 8 qui est normal qu'elle soit différente entre les deux feuilles.
Feuille 2 = Feuille SD1 donc même chose à l'exception pareil que la ligne 8
Etc.
Parce que j'ai l'impression que la feuille SD quand elle se créé elle prends comme base la feuille SD1 avec le même contenu .
Désolée encore pour le dérangement !!
Merci beaucoup en tout cas !!
Bonjour,
Parce que j'ai l'impression que la feuille SD quand elle se créé elle prends comme base la feuille SD1 avec le même contenu .
1. Effectivement mais je me suis toujours demandé le pourquoi de la feuille SD. Par contre je pense avoir compris qu'il s'agit d'un doublon de la feuille de référence (1,2,3...).
SD1 correspond à feuille 1, SD2 correspond à feuille 2 (vous dites dans votre post SD1 mais je suppose que c'est une erreur de frappe).
La ligne 8 quant à elle, fait toujours référence à la feuille Base. feuille "x" sur ligne 39 et feuille "SDx" sur ligne 40
Merci de confirmer que cela est correct.
2. Juste une idée, puisque la cellule D2 correspond toujours à la lettre A accompagnée d'un chiffre, on pourrait prendre cette information dans les formules situées entre les lignes 15 et 53 des colonnes A, B, C et D.
Si oui, je dois juste savoir si en D2 il n'y a s'agit toujours qu'une seule lettre. A1, A2....
Bonjour Dan,
Désolée pour le temps de réponse !!
Merci pour votre réponse !
1. Effectivement mais je me suis toujours demandé le pourquoi de la feuille SD. Par contre je pense avoir compris qu'il s'agit d'un doublon de la feuille de référence (1,2,3...).
SD1 correspond à feuille 1, SD2 correspond à feuille 2 (vous dites dans votre post SD1 mais je suppose que c'est une erreur de frappe).
La ligne 8 quant à elle, fait toujours référence à la feuille Base. feuille "x" sur ligne 39 et feuille "SDx" sur ligne 40
--> Oui tout à fait ! Erreur de frappe ! SD2 correspond à la feuille 2 etc..
--> Affirmatif concernant la ligne 8 :)
2. Juste une idée, puisque la cellule D2 correspond toujours à la lettre A accompagnée d'un chiffre, on pourrait prendre cette information dans les formules situées entre les lignes 15 et 53 des colonnes A, B, C et D.
Si oui, je dois juste savoir si en D2 il n'y a s'agit toujours qu'une seule lettre. A1, A2....
--> Affirmatif :) c'est toujours la lettre A accompagné d'un chiffre. Donc une seule lettre oui !
Merci beaucoup !!
Bonjour,
Dans la feuille SD1, faites ceci :
- En A16, mettez cette formule --> =SI(INDIRECT(STXT($D$2;2;NBCAR($D$2))&"!"&ADRESSE(LIGNE();COLONNE();))=0;"";INDIRECT(STXT($D$2;2;NBCAR($D$2))&"!"&ADRESSE(LIGNE();COLONNE();)))
- Tirez cette formule en B16
- Mettez A16 et B16 en format Standard
- En C16, mettez cette formule --> =SIERREUR(INDIRECT(STXT($D$2;2;NBCAR($D$2))&"!"&ADRESSE(LIGNE();COLONNE();));"-")
- Tirez la formule à droite en D16
- C16 et D16 sont déjà en format Compatibilité dans le fichier, donc là ne rien changer
- Ensuite sélectionnez A16 à D16
- Tirez la plage de formule jusque la ligne 53.
NB : vous devez toujours avoir une valeur Ax en D2. Ce qui se fera puisque vous avez cette information dans la colonne A de la feuille D-E-SEC
Si ok, je vous donnerai quelques modifications en plus que vous pourriez faire dans les codes
Bonjour Dan,
J'espère que vous allez bien.
Je vous remercie infiniment pour votre aide.
Je suis sincèrement désolée d'avoir "disparue" mais j'ai dû m'absenter pour régler quelques soucis personnels... Donc vraiment navrée !!
En tout cas c'est top ça marche !
Bonjour,
Pas de soucis.
J'ai vu deux choses que vous pouvez modifier :
1. Dans la feuille SD1, supprimez le "Private Sub Worksheet_SelectionChange(ByVal Target As Range)". Il ne sert à rien puisqu'il n'y a aucune ligne. Par contre à chaque fois que vous vous déplacez sur la feuille SD, excel exécute le code.
2. Dans votre code Private Sub BT_VALIDER_Click() à la mention EFFACER les donnees, vous pouvez remplacer les lignes de code par celles ci-dessous
'-----------------
' Effacer les données
'-----------------
With ThisWorkbook.ActiveSheet
' Nombre
'.Cells(DataProg.Ligne, COL_Nbre).ClearContents
'Désignation
.Cells(DataProg.Ligne, COL_DESIGNATION).ClearContents
'Unité
.Cells(DataProg.Ligne, COL_Unite).ClearContents
'Quantité
.Cells(DataProg.Ligne, COL_Quantite).ClearContents
'Prix
.Cells(DataProg.Ligne, COL_MaterielsInternesPrix).ClearContents
.Cells(DataProg.Ligne, COL_CarburantPrix).ClearContents
.Cells(DataProg.Ligne, COL_ConsommablesPrix).ClearContents
.Cells(DataProg.Ligne, COL_FournituresExceptionnellesPrix).ClearContents
.Cells(DataProg.Ligne, COL_LocationsExternesPrix).ClearContents
.Cells(DataProg.Ligne, COL_MainOeuvrePrix).ClearContents
End With3. D'autre part comme votre feuille Bibliothèque comprenant des tableaux structurés, vous n'aviez pas besoin de déclarer des Const dans le module. On aurait pu utiliser directement les noms repris dans le gestionnaire de noms dans le code. Cela aurait permis d'éviter de conserver ces variables continuellement lors de l'utilisation du fichier
D'accord c'est ce que je viens de faire merci !
3. D'autre part comme votre feuille Bibliothèque comprenant des tableaux structurés, vous n'aviez pas besoin de déclarer des Const dans le module. On aurait pu utiliser directement les noms repris dans le gestionnaire de noms dans le code. Cela aurait permis d'éviter de conserver ces variables continuellement lors de l'utilisation du fichier
Par rapport à cela, que recommanderiez-vous du coup s'il vous plait ?
Je rencontre un petit problème car lorsque je double click sur ma feuille 1 sur la ligne A15, j'ai bien mon tableau qui apparait avec toutes mes options et lorsque je choisi un objet, elle ne s'affiche plus... La ligne reste vide..
Mercii et désolée
Je rencontre un petit problème car lorsque je double click sur ma feuille 1 sur la ligne A15, j'ai bien mon tableau qui apparait avec toutes mes options et lorsque je choisi un objet, elle ne s'affiche plus... La ligne reste vide..
Logique car vous avez supprimé les lignes de code qu'il y avait entre le END WITH des lignes que je vous ai dit de modifier et le END SUB. Cela concerne donc toutes les lignes qui sont manquantes en dessous de ECRIRE LES DONNEES.
Bonjour
Mais du coup je n'ai pas compris.
Parce que j'ai remplacé ce que vous m'aviez dit mais j'ai peut-être dû le faire quelque part qu'il ne fallait pas.
Il faut que je remette l'ancien code ?
Hum... désolé en relisant mon ancien post, je n'ai pas été assez clair car il ne fallait pas supprimer la partie après le END WITH dans l'ancien code. Donc on recommence...
Dans votre code Private Sub BT_VALIDER_Click() à partir de la mention EFFACER les données, vous pouvez remplacer les lignes de code par celles ci-dessous :
'-----------------
' Effacer les données
'-----------------
With ThisWorkbook.ActiveSheet
' Nombre
'.Cells(DataProg.Ligne, COL_Nbre).ClearContents
'Désignation
.Cells(DataProg.Ligne, COL_DESIGNATION).ClearContents
'Unité
.Cells(DataProg.Ligne, COL_Unite).ClearContents
'Quantité
.Cells(DataProg.Ligne, COL_Quantite).ClearContents
'Prix
.Cells(DataProg.Ligne, COL_MaterielsInternesPrix).ClearContents
.Cells(DataProg.Ligne, COL_CarburantPrix).ClearContents
.Cells(DataProg.Ligne, COL_ConsommablesPrix).ClearContents
.Cells(DataProg.Ligne, COL_FournituresExceptionnellesPrix).ClearContents
.Cells(DataProg.Ligne, COL_LocationsExternesPrix).ClearContents
.Cells(DataProg.Ligne, COL_MainOeuvrePrix).ClearContents
End With
'-----------------
' Ecrire les données
'-----------------
With ThisWorkbook.ActiveSheet
' Nombre
'.Cells(DataProg.Ligne, COL_Nbre).Value = 1
' Désignation
.Cells(DataProg.Ligne, COL_DESIGNATION).Value = ValeurDesignation
' Unité
.Cells(DataProg.Ligne, COL_Unite).Value = ValeurUnite
' Qunatité
' .Cells(DataProg.Ligne, COL_Quantite).Value = ValeurQte
' Prix
.Cells(DataProg.Ligne, ColPrixDest).Value = ValeurPrix
End With
'-----------------
' Fermer la Page
'-----------------
Unload Me
'-----------------
End SubBonjour Dan,
J'espère que vous allez bien.
J'ai bien rajouté ce que vous m'avez dit et c'est parfait merci !
J'ai deux petites questions s'il vous plait ?
- Pourquoi dans ma feuille SD1 les cellules sont en bleus clairs ? Ainsi que dans ma feuille 1 à partir de la A16. Ce n'est pas grave du tout hein mais c'est juste par curiosité. C'est dû à une mise en forme conditionnelle ? Pourtant je regarde mais je ne vois rien.
- Comme pour la Désignation, le Nbre et la Qté, je souhaite que ma feuille SDX reprenne toutes les informations de ma feuille X (en l'occurrence ici SD1 reprenne la feuille 1). Donc à savoir les les prix lui sont associés (exemple ci-dessous). Est ce que je une formule de SI imbriqué est optimal pour ce que je souhaite faire ? En effet en fonction de la désignation, les colonnes qui seront remplies ne seront pas les mêmes. Par exemple ci-dessous, la partie Main d'Oeuvre se rempli car j'ai sélectionné le "thème" main d'œuvre.
Si je dois être plus précise la bibliothèque se découpe comme se suit :
- Main D'œuvre = P.U Main D'Oeuvre (Colonne I) + TOTAL (Colonne K)
- Matériel Interne = P.U (Colonne E) + Total matériel interne (Colonne F)
- Location Externe + Fournitures exceptionnelles = P.U (Colonne G) + Total matériel externe (Colonne H)
- Consommables + Carburant = Colonne J + Colonne K
Pensez-vous qu'un SI Imbriqué est une bonne option du coup ?
Merci beaucoup par avance!
- Pourquoi dans ma feuille SD1 les cellules sont en bleus clairs ? Ainsi que dans ma feuille 1 à partir de la A16. Ce n'est pas grave du tout hein mais c'est juste par curiosité. C'est dû à une mise en forme conditionnelle ? Pourtant je regarde mais je ne vois rien.
Non pas de MFC. C'est juste la couleur de la police qui est bleu. Il suffit de formater les cellules pour remettre la bonne couleur
Je vais regarder pour le deuxième point.
NB : attention que dans votre fichier vous avez une liaison à un fichier Feuille de Vente - 5E.xlsm. Je suppose que vous avez fait un copier coller. D'où cela m'affiche toujours un message à l'ouverture
Edit : autre chose, je ne sais pas pourquoi vous avez fait cela mais vous ne devez pas mettre des accolades dans les formules en colonne A, B, C et D des feuilles SD.
Re,
Est ce que je une formule de SI imbriqué est optimal pour ce que je souhaite faire ?
Non. Si votre feuille SD1 est partout identique à la feuille 1, il faut suffit de recopier la formule que je vous ai donnée avant et présente en C15 --> =SIERREUR(INDIRECT(STXT($D$2;2;NBCAR($D$2))&"!"&ADRESSE(LIGNE();COLONNE();));"-") jusque la cellule Q15.
Ensuite vous recopiez la plage vers le bas jusque la ligne 53
Attention ne mettez pas d'accolades .... et supprimez les bien des formules comme je vous l'ai écrit
Ah oui d'accord, j'ai configuré pour que ce soit du noir.
J'ai bien enlevé les accolades. Merci beaucoup !
Je rencontre un problème.... Je ne sais pas ce qu'il s'est passé !! :( :(
Lorsque je rempli ma colonne C à partir de la ligne 20, il ne me créé plus ma feuille et la SD qui va avec... J'ai ça comme message :
Ainsi que :
Désoléeeeee !
J'ai bien enlevé les accolades. Merci beaucoup !
Non elles sont toujours dans votre fichier
Lorsque je rempli ma colonne C à partir de la ligne 20, il ne me créé plus ma feuille et la SD qui va avec... J'ai ça comme message :
Comme le message vous dit, il faut d'abord déprotéger la feuille "Feuille BAse...." avant sans quoi impossible de mettre les formules. Donnez moi le mot de passe que je regarde
Mais accolades c'est bien {} ? Parce que j'ai réécrie vôtre formule sans rien ajouter.
Le MDP c'est 1234 :)
Merciii
Mais accolades c'est bien {} ? Parce que j'ai réécrie vôtre formule sans rien ajouter.
Oui c'est cela. Pas besoin de réécrire la formule, une fois la cellule sélection mettez le pointeur de la souris dans la barre de formule puis appuyer sur la touche ENTREE du clavier. Cela va les enlever. Une fois fait vous devrez recopier la formule jusqu'en ligne 53 car vous aurez probablement des cellules qui se mettent en erreur.
Concernant les 2 erreurs dans la macro,
1. erreur 1004 : C'est dû à votre feuille protégée. J'ai placé une ligne pour déprotéger
2. Erreur 9 : c'est normal car vous essayez de créer une feuille alors que la précédente n'existe pas. Exemple dans votre fichier vous voulez créer l'onglet 4 alors que les onglets 2 et 3 n'existent pas. La création de l'onglet n'est possible que si le précédent existe. Dans le cas de votre fichier, vous devez reprendre à C2.
J'ai modifié le code pour que vous ayez un message qui vous affiche que la feuille précédente n'est pas créé. Vous pouvez tester en essayant de créer l'onglet 4 puis 3. Vous recevrez le message. Pour le deux vous n'aurez pas de message puisque le 1 existe
Je pense que ce sera plus simple si je vous renvoie votre fichier avec les formules sans accolades et le code corrigé
Ah oui d'accord ! En effet je n'ai pas fait ce que vous m'aviez dit...
Merci !
Merci pour la correction !
J'ai deux questions également.. (je suis insupportable je sais, désolée vraiment).
1 : lorsque j'efface dans ma feuille DE-SEC une ligne ça me met cela :
2 : lorsque je rempli une nouvelle ligne dans ma feuille D-E-SEC il me crée bien ma nouvelle feuille mais il reprends ce qui est dans la feuille 1. Existe t-il un moyen qu'il se créé "vide".
Apres encore une fois, se sont des détails qui ne sont pas grave en soit mais c'est pour savoir si cela est possible ^^.
Merci beaucoup !
