Base de données : macro Youki

Rousseau Benoit

XLDnaute Nouveau
Bonjour,

je suis en train de créer une base assez importante compte-tenu de mes maigres compétences.
Il m'a fallu trouver un système pour vérifier l'existence de lien hypertexte et j'ai trouvé la fonction je crois sur le site. Ca marche nickel.
J'ai été aidé pour la création de certaines des formules (sur votre site) qui marche également nickel.
Mon probléme actuelement est de créer automatiquement des onglets à partir d'un tableau lourd chaque fois que je le complète donc chaque fois que je cré une nouvelle ligne. J'ai à ce titre créer un modèle d'onglet lié au tableau. J'ai trouvé une macro (celle de Youki) pour créer des onglets automatiquement à partir du modèle d'onglet. mle hic c'est que la macro ne fonctionne pas et que je n’arrive pas compte-minute de mes maigres connaissances en VBA à la déboguer. C'est extrêmement rageant (j'en devient "dingo"). La fonction oldlig pose apparemment un problème mais je ne vois pas lequel? Est-ce que quelqu'un est prêt à m'aider et à me faire comprendre ce qui ne va pas? Je n'ai que des mercis à offrir mais ils sont sincères.
Je joint un exemple pour être plus parlant. J'espère l'avoir correctement anonymiser.


Bien cordialement

benoit
 

Pièces jointes

  • exemple.xlsm
    217 KB · Affichages: 30

Rousseau Benoit

XLDnaute Nouveau
Bonjour Pierre Jean,

Merci beaucoup pour votre réponse. C'était ça!
Cela fonctionne maintenant. J'ai changé les colonnes dans VBA pour adapter à mon registre.
Ca marche mais par contre lorsque je crée des onglets, j'ai les n° de lignes qui s'affiche partout ou il y a de la place. Savez-vous d’où cela provient?
De plus, est-il possible d'appeler les onglets crées par le nom et le prénom. J'ai fais des essais complétement infructueux de lcase.
J'ai joint de nouveau mon exemple pour plus de clarté.
Bien cordialement

Benoit
 

Pièces jointes

  • exemple.xlsm
    228.1 KB · Affichages: 20

Rousseau Benoit

XLDnaute Nouveau
Je suis épaté par votre rapidité!!! le code pour avoir nom et prénom c'est ça ActiveSheet.Name = r & " " & Target.Offset(0, 1)?
En reprenant aussi votre exemple, je n'ai plus de chiffres partout (c'est mystérieux). par contre contrairement à l'exemple d'origine qui vient du site, je n'ai aucune mise à jour du contenu des onglets. Les noms d'onglets sont différents mais la macro ne lie pas aux différentes lignes.
Ainsi j'ai 2 onglets Duran Jean et Charles Pierre mais le contenu est de ces onglets est identique...J'ai vraiment l'impression d'abuser mais je passe par des ascenceurs émotionnel assez intense.


cordialement
benoit
 

pierrejean

XLDnaute Barbatruc
Re
Cela devrait aller un peu mieux pour quelques formules
(modif de la ligne ActiveSheet.[a4:Fp500].Replace 4, r.Row, xlPart 'MAJ des formules de liaison : 4 au lieu de 1)
Mais beaucoup d'autres font appel à des données externes pour lesquelles je ne peux rien
 

Pièces jointes

  • exemple (19).xlsm
    264.2 KB · Affichages: 20

Rousseau Benoit

XLDnaute Nouveau
Pierre Jean ça à l'air franchement génial. Merci! (je ne sais vraiment pas quoi dire d'autre)
Pour les données externes, ce sont des liens hypertextes que j’affiche avec la fonction lien valide. Je ne suis pas au boulot avant mercredi mais j e suis quasiment sûr que ça gaze! Vous donnez des cours online de vba???

cordialement


Benoit
 

Rousseau Benoit

XLDnaute Nouveau
Bonjour Pierre Jean,


Je viens de reprendre le modèle afin de peaufiner les détails. J'en ai profité pour faire quelques essais (ertes sans les liaisons extérieurs) mais je sais qu'ils marchent (ils dépendent de la petite fonction vba "lien_valide").
J'ai encore des soucis sur les liaisons ligne 39 (visible sur l'onglet "Charles Louis"") et aussi sur la ligne 74.
S'il vous reste encore un peu de patience pour m'expliquer ou me montrer comment modifier la MAJ des liaisons se serait super!4
J'ai joint l'exemple pour plus de lisibilité.


Bien cordialement


Benoit
 

Pièces jointes

  • Exemple (20).xlsm
    255.9 KB · Affichages: 14

Rousseau Benoit

XLDnaute Nouveau
Bonjour,
Je pense que j'ai dû manquer de clarté dans mon explication ci-dessus. Voici donc précisément ce qui se passe quand je lance la macro :
ligne 39 du modèle : à partir du 2eme nom dans mon exemple c'est l'onglet Charles Louis, j'ai un décalage. A savoir je devrais normalement avoir marqué "Formation 4" et j'ai "Formation 5" en cellule A39. De plus, la formule dans la cellule C39 se retrouve liée à "FC5" alors que dans le modèle elle est liée à FC4.
J'ai également un problème sur le même onglet avec un décalage des formules du modèle sur la cellule F40. Ici sur l'ongle Charles Louis j'ai une formule : SI(C50="pas de document";"";REGISTRE!AJ5) alors que dans le modèle =SI(C40="pas de document";"";REGISTRE!AJ5). C'est la même chose avec les cellules G40, F41 et G41 qui se retrouve avec un"+10" dans la formule.
De manière analogue la cellule B74 se retrouve liée à un document "FT5" alors que dans le modèle, elle est liée à FT4.
Est ce que quelqu'un veux bien m'aider? Pierre Jean:D?
Merci d'avance.


>Cordialement


Benoit
 

pierrejean

XLDnaute Barbatruc
Re

A tester:
Ligne modifiée
ActiveSheet.[a73:Fp500].Replace 4, r.Row, xlPart 'MAJ des formules de liaison

En effet le contenu de A39 comporte le 4 qui se trouve ainsi modifié
 

Pièces jointes

  • Exemple (20).xlsm
    276.3 KB · Affichages: 7

Rousseau Benoit

XLDnaute Nouveau
Bonjour Pierre Jean,

Merci encore pour le temps passé sur mon pb. Je viens de modifier la macro "this work book" en suivant vos préconisations :
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Dim exclu, oldlig, newlig As Variant
exclu = Array("Registre", "DONNEES", "modele", "Labo Equipe", "Statistiques") 'feuilles à ne pas étudier
With Sh
If IsNumeric(Application.Match(.Name, exclu, 0)) Then Exit Sub
If LCase(.Name) = LCase(.[a4]) Then Exit Sub
oldlig = Mid(.[a4].Formula, InStr(.[a4].Formula, "!") + 2)
newlig = Application.Match(Sh.Name, Sheets("Registre").[a:a], 0)
If IsNumeric(newlig) Then .[a73:Fp500].Replace oldlig, newlig, xlPart
End With
End Sub


Maintenant c'est beaucoup mieux sur la ligne 39 mais par contre la MAJ des liaisons ne se fait plus du tout à savoir que dès le 2eme nom les formules restent liées à la ligne 4 et ne se décale pas en ligne 5. Avez vous une solution? D'avance merci.

cordialement

benoit
 

Discussions similaires

Statistiques des forums

Discussions
311 730
Messages
2 081 978
Membres
101 854
dernier inscrit
micmag26