Lien automatique vers une page créée avec une même macro

Cedric apf

XLDnaute Nouveau
[Résolu]Lien automatique vers une page créée avec une même macro

Bonjour à tous, je suis débutant en vba et là je bloque. J'ai essayé de trouver des bidouilles avec l'enregistreur de macro, mais sans succès...

alors, j'ai une macro sur un bouton qui me permet d'ajouter des clients à une liste existante (coordonnées et autres) et créée également une nouvelle page pour chaque nouveau client. Sur cette fiche client (et ma liste) j'ai automatisé les infos avec des inputbox (même le nom de la feuille prend le nom du client), ainsi que la mise en forme.

Ces mêmes infos d'InputBox sont répertoriées aussi sur ma page de base (base clients) regroupant tous mes clients (un par ligne).

Tout ça fonctionne très bien (j'ai mis beaucoup de temps :D), mais là je bloque car je voudrais sur ma feuille de base répertoriant tous les clients, que sur chaque nom de client, ma macro place aussi un lien vers la fiche du client concerné.

Voici la macro placée sur mon bouton :

Sub Nouvelle_fiche()
'
' Nouvelle_fiche Macro
'
Dim d1, d2, d3, d4, d5, d6, d7, d8

d1 = InputBox("Nom du Client ?")
d2 = InputBox("Code postale ?")
d3 = InputBox("Ville ?")
d4 = InputBox("N° et Rue du Client ?")
d5 = InputBox("Nom du Contact ?")
d6 = InputBox("N° de Tél ? (Sans espace ni tiret)")
d7 = InputBox("N° de Fax ? (Sans espace ni tiret)")
d8 = InputBox("adresse email ? (nc si non-communiquée)")

Range("A65536").End(xlUp).Offset(1, 0).Value = d1
Range("C65536").End(xlUp).Offset(1, 0).Value = d2
Range("D65536").End(xlUp).Offset(1, 0).Value = d3
Range("B65536").End(xlUp).Offset(1, 0).Value = d4
Range("E65536").End(xlUp).Offset(1, 0).Value = d5
Range("F65536").End(xlUp).Offset(1, 0).Value = d6
Range("G65536").End(xlUp).Offset(1, 0).Value = d7
Range("H65536").End(xlUp).Offset(1, 0).Value = d8

Sheets("Modèle fiche Client").Select
Range("A1:H6").Select
Selection.Copy
Sheets.Add After:=Sheets(Sheets.Count)
ActiveSheet.Name = d1
ActiveSheet.Paste
ActiveSheet.Move Before:=Sheets(3)

Sheets(d1).Select

Columns("A:A").ColumnWidth = 36.43
Columns("I:I").ColumnWidth = 24.57
Columns("G:G").ColumnWidth = 30.57
Columns("F:F").ColumnWidth = 30.57
Columns("E:E").ColumnWidth = 32.86
Columns("D:D").ColumnWidth = 44.71
Columns("C:C").ColumnWidth = 19.86
Columns("B:B").ColumnWidth = 30.57
Rows("1:1").RowHeight = 31.5
Rows("2:44750").Select
Selection.RowHeight = 39.75
ActiveWindow.Zoom = 62
Columns("H:H").ColumnWidth = 57.29
Range("A1").Select

Range("A1") = d1
Range("C1") = d2
Range("D1") = d3
Range("B1") = d4
Range("E2") = d5
Range("F2") = d6
Range("G2") = d7
Range("H2") = d8

Range("A6").Select
ActiveWindow.FreezePanes = True

End Sub
 
Dernière édition:

JNP

XLDnaute Barbatruc
Re : Lien automatique vers une page créée avec une même macro

Bonjour et bienvenue Cedric Apf :),
Chez moi, avec l'enregistreur sous 2007, et en réadaptant à ton code, ça donne ça
Code:
Range("I65536").End(xlUp).Offset(1, 0).Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:= _
        d1, TextToDisplay:=d1
A vérifier que ce soit la même chose sous 2003.
Bonne soirée :cool:
 

Cedric apf

XLDnaute Nouveau
Re : Lien automatique vers une page créée avec une même macro

Alors j'avais tenté cette ligne de code, mais sans doute je la place mal dans mon code car excel (2007 en mode compatibilité 97-200) voit un lien non-valide (en plus il met n'importe où sur le tableau, dans mon essai en F15:confused:).

Mais perso même à un autre endroit dans le code, je ne pense que ça puisse fonctionner car la feuille d1 n'existe pas puisque qu'elle prend en nom le texte que je met en d1 avec l'InputBox.
 

JNP

XLDnaute Barbatruc
Re : Lien automatique vers une page créée avec une même macro

Bonjour :),
Il manque la référence à la feuille (que je ne connais pas)
Code:
Sheets("[COLOR=red][B]Récapitulatif des clients[/B][/COLOR]").Range("I65536").End(xlUp).Offset(1, 0).Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:= _
        d1, TextToDisplay:=d1
et le code est à placer à la fin de la sub.
Bon courage :cool:
 

Cedric apf

XLDnaute Nouveau
Re : Lien automatique vers une page créée avec une même macro

Non bah ça ne fonctionne pas... toujours lien non valide :/ j'aimerai pouvoir vous mettre mon fichier à dispo mais il est trop gros, et en binaire le forum n'en veut pas....
 

Cedric apf

XLDnaute Nouveau
Re : Lien automatique vers une page créée avec une même macro

ah oui, super merci, voilà donc mon fichier.

Seule contrainte pour le moment pour qu'il fonctionne correctement, remplir toutes les inputbox afin de bien avoir des lignes clients complètes. sinon les infos de chaque client vont se mélanger :/

Et je vous conseille de commencer par créer un nouveau client avant d'essayer le bouton ajout affaire ;)
 

Pièces jointes

  • gestion des clients.zip
    37.7 KB · Affichages: 26

JNP

XLDnaute Barbatruc
Re : Lien automatique vers une page créée avec une même macro

Re :),
J'ai juste modifié
Code:
Range("A65536").End(xlUp).Offset(1, 0).Value = d1
en
Code:
Range("A65536").End(xlUp).Offset(1, 0).Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:= _
        d1 & "!A1", TextToDisplay:=d1
et ça fonctionne (juste la mise en forme des cellules à peaufiner).
Bonne journée :cool:
 

Cedric apf

XLDnaute Nouveau
Re : Lien automatique vers une page créée avec une même macro

Ah bah voilà, c'était ça l'astuce que je ne trouvais pas : SubAddress:= _
d1 & "!A1"


Un grand merci à toi ;)

Cependant, je dois avoir un bug, quand je créé mon 1er client, au lieu que le nom du client se mette en colonne A et à la première ligne vide et son adresse en colonne B à la première ligne vide, ces deux infos se mettent en cellule B7 et B8 :confused:
 

Cedric apf

XLDnaute Nouveau
Re : Lien automatique vers une page créée avec une même macro

En fait, après plusieurs essais et j'ai même essayé de repartir depuis un nouveau classeur où je n'ai recopié que les cellules textes et réaffecter mes macros, le nom du client avec le lien se place aléatoirement dans le tableau :confused:

Comprends pas. Est-ce l'emplacement de la ligne dans la macro ?
 

Cedric apf

XLDnaute Nouveau
Re : Lien automatique vers une page créée avec une même macro

C'est bon, j'ai trouvé une solution, sélectionner d'abord cette première cellule vide avant d'en indiquer son contenu :

Range("A65536").End(xlUp).Offset(1, 0).Select
Range("A65536").End(xlUp).Offset(1, 0).Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:= _
d1 & "!A1", TextToDisplay:=d1

A présent j'aimerai indiquer un message d'erreur lorsqu'une InputBox n'a pas reçu d'information. Je voudrais que lorsqu'on appuie sur OK, un message indique "Veuillez remplir le champ pour continuer"

J'ai pas encore cherché comment faire...
 

Pièces jointes

  • Gestion des clients V2.zip
    23.1 KB · Affichages: 24
  • Gestion des clients V2.zip
    23.1 KB · Affichages: 25
  • Gestion des clients V2.zip
    23.1 KB · Affichages: 25

JNP

XLDnaute Barbatruc
Re : Lien automatique vers une page créée avec une même macro

Bonjour Cédric Apf :),
J'ai refait des tests... C'est un peu bizarre, on dirais que ça tient compte de la sélection, alors qu'il n' y a aucune ligne de code qui y fait référence... Bref, pour éviter le problème, j'ai rajouté tout au début de la sub :
Code:
Range("A65536").End(xlUp).Offset(1, 0).Select
et chaque essai a fonctionné. Tiens moi au courant.
Bonne journée :cool:
 

JNP

XLDnaute Barbatruc
Re : Lien automatique vers une page créée avec une même macro

Re :),
J'ai l'impression que le serveur a de nouveau un souci d'horloge... Ton message n'est apparu qu'après le mien... :D
A partir du moment où tu passes par des InputBox, tu n'as que la possibilité de tester si la réponse n'est pas nulle :
Code:
[COLOR=red]Nom:[/COLOR]
d1 = InputBox("Nom du Client ?")
[COLOR=red]If d1 = "" Then Goto Nom[/COLOR]
à mettre autour de chaque InputBox en changeant de nom de retour à chaque fois...
Sinon, le plus simple serait de faire un USF avec tous les champs, ce qui te permetrait de tester à chaque sortie de TextBox, de corriger, voir mettre des masques (5 chiffres pour le code postal par exemple).
Bon courage :cool:
 

Cedric apf

XLDnaute Nouveau
Re : Lien automatique vers une page créée avec une même macro

J'ai mis ça en place pour chaque InputBox, mais ça ne marche qu'avec le d1...

Dim d1, d2, d3, d4, d5, d6, d7, d8, Nom1, Nom2, Nom3, Nom4, Nom5, Nom6, Nom7, Nom8

Nom1:
d1 = InputBox("Nom du Client ?")
If d1 = "" Then GoTo Nom1

Nom2:
d2 = InputBox("Code postale ?")
If d1 = "" Then GoTo Nom2

Nom3:
d3 = InputBox("Ville ?")
If d1 = "" Then GoTo Nom3

Nom4:
d4 = InputBox("N° et Rue du Client ?")
If d1 = "" Then GoTo Nom4

Nom5:
d5 = InputBox("Nom du Contact ?")
If d1 = "" Then GoTo Nom5

Nom6:
d6 = InputBox("N° de Tél ? (Sans espace ni tiret)")
If d1 = "" Then GoTo Nom6

Nom7:
d7 = InputBox("N° de Fax ? (Sans espace ni tiret)")
If d1 = "" Then GoTo Nom7

Nom8:
d8 = InputBox("adresse email ? (nc si non-communiquée)")
If d1 = "" Then GoTo Nom8
 

Statistiques des forums

Discussions
312 307
Messages
2 087 096
Membres
103 468
dernier inscrit
TRINITY