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
 

Fichiers joints

pierrejean

XLDnaute Barbatruc
Bonjour Benoit
il semble que dans cette ligne un & ait été introduit par erreur
Dim exclu, oldlig&, newlig As Variant
 

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
 

Fichiers joints

Rousseau Benoit

XLDnaute Nouveau
Bonsoir,

je viens de m'apercevoir d'un autre problème que je n'arrive pas à résoudre. En créant des onglets, xls ne passe à la ligne. Il reste bloqué sur la ligne 4.
 

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
 

Fichiers joints

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
 

Fichiers joints

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é
 

Fichiers joints

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
 

pierrejean

XLDnaute Barbatruc
Re

Quel est le rôle de la macro thisworkbook ?
Par ailleurs les codes font souvent mention de A4 or A4 est généralement vide !!!
Le mieux est de nous décrire exactement le rôle des macros
 

pierrejean

XLDnaute Barbatruc
Re

A tester
NB: Le problème pour thisworkbook provenait de l'adjonction du prénom dans le nom des feuilles
J'ai du modifier aussi la macro change de la feuille REGISTRE
Je n'ai pas testé l'effacement multiple
 

Fichiers joints

Rousseau Benoit

XLDnaute Nouveau
Bonsoir,
Merci encore de ne pas avoir lâcher l'affaire! Je viens de tester et dès le 2eme onglet crée les lignes 39 et 40 ne suivent pas (cf.onglet Charles Louis cellules en jaune). J'ai de plus crée un utilisateur Pierre Franck et sur cet onglet la ligne10 n'est pas MAJ puisque elle reste liée à la ligne 4 de registre.

Cordialement

Benoit
 

Fichiers joints

Rousseau Benoit

XLDnaute Nouveau
Re,

Je viens de tester et la mise à jour ne se fait pas correctement pour le 2eme utilisateur Charles Louis et pour les suivants pour les lignes 39,40 et 41

La macro le fait passer à formation 5 à la pla ce de 4 en cellule A39 mais modifie aussi les formules me permettant d'avoir accès au pdf (cf. exemple 24 en PJ)
Bien cordialement

benoit
 

Fichiers joints

Créez un compte ou connectez vous pour répondre

Vous devez être membre afin de pouvoir répondre ici

Créer un compte

Créez un compte Excel Downloads. C'est simple!

Connexion

Vous avez déjà un compte? Connectez vous ici.

Haut Bas