Débutant en VBA ,petits problémes
Caillard
-
Armojax -
Armojax -
Voila mon probleme ;
Sous excel je fais du VBA seulement voila je suis débutant et je n’arrive pas à faire la chose suivante :
J’ai pour l’instant 3 feuilles. J’ai déjà crée une macro pour copier la feuille 3. Seulement voila mon pb : à partir de cette copie de la feuille 3 il faut que je que je remplisse une case (mettre un nom) et que celui-ci se retrouve dans un tableau de la feuille 1(noms les uns sous les autres car bcp de feuilles 3 a faire). Enfin il faut que le nom qui se retrouve dans la feuille 1 soit relier (lien hypertexte) avec la copie de la feuille 3
Sous excel je fais du VBA seulement voila je suis débutant et je n’arrive pas à faire la chose suivante :
J’ai pour l’instant 3 feuilles. J’ai déjà crée une macro pour copier la feuille 3. Seulement voila mon pb : à partir de cette copie de la feuille 3 il faut que je que je remplisse une case (mettre un nom) et que celui-ci se retrouve dans un tableau de la feuille 1(noms les uns sous les autres car bcp de feuilles 3 a faire). Enfin il faut que le nom qui se retrouve dans la feuille 1 soit relier (lien hypertexte) avec la copie de la feuille 3
A voir également:
- Débutant en VBA ,petits problémes
- Logiciel de programmation pour débutant - Guide
- Logiciel montage vidéo débutant - Guide
- Excel compter cellule couleur sans vba - Guide
- Petite amie virtuelle en français gratuit - Accueil - Intelligence artificielle
- Find vba - Astuces et Solutions
5 réponses
Bonjour,
Avant de répondre à ta question, je voudrais être sûr que j'ai bien compris ce que tu veux faire.
Je formule ce que je comprends :
- Tu as une Feuil3 qui contient des données.
- Tu auras par la suite d'autres feuilles (Feuil4, 5, 6 etc.) qui contiendront aussi des données.
- A chacune de ces feuilles, tu attribueras une référence, saisie dans la feuille en question, toujours au même endroit.
- Dans une autre feuille (Feuil1 par exemple, qui serait en quelque sorte un index, tu veux retrouver, sous forme de liste, ces références aux différentes autres feuilles (en colonne, par exemple).
- Ces références seront des liens hypertextes qui pointeront directement sur les feuilles en question.
Avant d'aller plus loin, dis-moi si c'est bien ça, ou si j'ai tout faux.
Cordialement.
Armojax.
Avant de répondre à ta question, je voudrais être sûr que j'ai bien compris ce que tu veux faire.
Je formule ce que je comprends :
- Tu as une Feuil3 qui contient des données.
- Tu auras par la suite d'autres feuilles (Feuil4, 5, 6 etc.) qui contiendront aussi des données.
- A chacune de ces feuilles, tu attribueras une référence, saisie dans la feuille en question, toujours au même endroit.
- Dans une autre feuille (Feuil1 par exemple, qui serait en quelque sorte un index, tu veux retrouver, sous forme de liste, ces références aux différentes autres feuilles (en colonne, par exemple).
- Ces références seront des liens hypertextes qui pointeront directement sur les feuilles en question.
Avant d'aller plus loin, dis-moi si c'est bien ça, ou si j'ai tout faux.
Cordialement.
Armojax.
Donc,
- supposons que tu crées une nouvelle fiche, en feuille 4, pour le client Caillard. Dans cette feuille, le nom se trouve, par exemple, dans la cellule A2. Ou, en notation L1C1, en : Cells(2,1).
- supposons aussi que le lien hypertexte qui servira d'index se trouvera dans la feuille 1, en cellule B3 (ou Cells(3,2)).
1) Donne à ton nouvel index le nom du client :
Sheets("Feuil1").Cells(3,2).Value=Sheets("Feuil4").Cells(2,1).Value
2) Ajoute ensuite le lien hypertexte, qui pointe, par exemple, sur la cellule A2 de la feuille 4, soit sur Feuil4!L1C1. Ça donne :
Sheets("Feuil1").Hyperlinks.Add Anchor:=Sheets("Feuil1").Cells(3, 2), Address:="", SubAddress:= "Feuil4!L1C1"
Tu peux aussi donner à chaque feuille le nom du client :
Sheets(Feuil4").Name="Caillard".
Tout ceci peut se paramétrer, bien évidemment, de façon à avoir toujours la même routine quelle que soit la nouvelle feuille.
Par exemple, si ta première fiche est en Feuille 4, c'est donc la fiche numéro : (nombre de feuilles) -3.
Soit : ThisworkBook.Sheets.Count - 3, que tu peus stocker dans une variable.
J'espère avoir répondu à ta question.
Armojax.
- supposons que tu crées une nouvelle fiche, en feuille 4, pour le client Caillard. Dans cette feuille, le nom se trouve, par exemple, dans la cellule A2. Ou, en notation L1C1, en : Cells(2,1).
- supposons aussi que le lien hypertexte qui servira d'index se trouvera dans la feuille 1, en cellule B3 (ou Cells(3,2)).
1) Donne à ton nouvel index le nom du client :
Sheets("Feuil1").Cells(3,2).Value=Sheets("Feuil4").Cells(2,1).Value
2) Ajoute ensuite le lien hypertexte, qui pointe, par exemple, sur la cellule A2 de la feuille 4, soit sur Feuil4!L1C1. Ça donne :
Sheets("Feuil1").Hyperlinks.Add Anchor:=Sheets("Feuil1").Cells(3, 2), Address:="", SubAddress:= "Feuil4!L1C1"
Tu peux aussi donner à chaque feuille le nom du client :
Sheets(Feuil4").Name="Caillard".
Tout ceci peut se paramétrer, bien évidemment, de façon à avoir toujours la même routine quelle que soit la nouvelle feuille.
Par exemple, si ta première fiche est en Feuille 4, c'est donc la fiche numéro : (nombre de feuilles) -3.
Soit : ThisworkBook.Sheets.Count - 3, que tu peus stocker dans une variable.
J'espère avoir répondu à ta question.
Armojax.
j'ai encore quelques problémes
déja merci pour ton aide.
je n'arrive plus a ecrire la ligne de programme suivante:
Sheets ("Feuil1")
cela me dit qu"il ya une erreur
je ne comprend pas
et la deuxiéme chose est ce qu'on peut recuperer une variable lorsque je crée une nouvelle page. je m'explique dans mon programme je crée des nouvelles pages souvent (se sont des copies de la feuille 3) en fait mes liens hypertext qui vont de l'index ( liste clients) et les fiches clients vont sur la feuille 3 et non sur les fiches clients qui leur sont destiné.
merci
déja merci pour ton aide.
je n'arrive plus a ecrire la ligne de programme suivante:
Sheets ("Feuil1")
cela me dit qu"il ya une erreur
je ne comprend pas
et la deuxiéme chose est ce qu'on peut recuperer une variable lorsque je crée une nouvelle page. je m'explique dans mon programme je crée des nouvelles pages souvent (se sont des copies de la feuille 3) en fait mes liens hypertext qui vont de l'index ( liste clients) et les fiches clients vont sur la feuille 3 et non sur les fiches clients qui leur sont destiné.
merci
En fait, tu crées une nouvelle page (feuille Excel) à chaque nouveau client.
Ta feuille Index est la Feuil1. Tu fais les saisies dans la Feuil3, et tu ranges les clients dans les feuilles suivantes : Feuil4, 5, 6... Je pense que c'est bien ça, n'est-ce pas ?
Tu devrais donner à tes feuilles des noms plus parlants.
Par exemple, renomme ta Feuil1 "Index". Il suffit de faire un double clic sur l'onglet de la feuille, et de taper le nouveau nom.
De même, ta feuille 3 pourrait s'appeler "Saisie", par exemple.
Chaque nouveau client va générer une feuille supplémentaire. Si au moment de faire la copie, tu as déjà 5 feuilles en tout, c'est que tu as 2 clients, et que tu vas en créer troisième dans une feuille 6.
Pour ça, écris :
Dim N as Integer
N=WorkSheets.Count
Sheets.Add after:=Sheets(N)
Worksheets(N+1).CodeName = "Feuil" & (N+1)
Ceci va te créer une feuille qui s'appellera Feuil6
Si tu veux que ta feuille s'appelle Client3 (c'est le troisième client), remplace "Feuil" & (N+1) par "Client" & (N-2)
Ton lien hypertexte pointe toujours sur le Feuille 3 ?
Fais le pointer vers "Feuil" & (N+1) dans ta macro.
A+.
Armojax.
Ta feuille Index est la Feuil1. Tu fais les saisies dans la Feuil3, et tu ranges les clients dans les feuilles suivantes : Feuil4, 5, 6... Je pense que c'est bien ça, n'est-ce pas ?
Tu devrais donner à tes feuilles des noms plus parlants.
Par exemple, renomme ta Feuil1 "Index". Il suffit de faire un double clic sur l'onglet de la feuille, et de taper le nouveau nom.
De même, ta feuille 3 pourrait s'appeler "Saisie", par exemple.
Chaque nouveau client va générer une feuille supplémentaire. Si au moment de faire la copie, tu as déjà 5 feuilles en tout, c'est que tu as 2 clients, et que tu vas en créer troisième dans une feuille 6.
Pour ça, écris :
Dim N as Integer
N=WorkSheets.Count
Sheets.Add after:=Sheets(N)
Worksheets(N+1).CodeName = "Feuil" & (N+1)
Ceci va te créer une feuille qui s'appellera Feuil6
Si tu veux que ta feuille s'appelle Client3 (c'est le troisième client), remplace "Feuil" & (N+1) par "Client" & (N-2)
Ton lien hypertexte pointe toujours sur le Feuille 3 ?
Fais le pointer vers "Feuil" & (N+1) dans ta macro.
A+.
Armojax.
j'ai bien fais un copier coller sur:
Dim N as Integer
N=WorkSheets.Count
Sheets.Add after:=Sheets(N)
Worksheets(N+1).CodeName = "Feuil" & (N+1)
il crée bien une autre feuille mais ça m'affiche un message d'erreur et cela met la derniere ligne en jaune fluo.cela affiche: erreur d'exécution, nombre d'arguments incorrect ou affectation de proprité incorrecte.?
Dim N as Integer
N=WorkSheets.Count
Sheets.Add after:=Sheets(N)
Worksheets(N+1).CodeName = "Feuil" & (N+1)
il crée bien une autre feuille mais ça m'affiche un message d'erreur et cela met la derniere ligne en jaune fluo.cela affiche: erreur d'exécution, nombre d'arguments incorrect ou affectation de proprité incorrecte.?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
concernant le lien hypertext de l'index aux différentes feuilles qui seront créees.
*je remplace:
SubAddress:= _
"Feuil3!a1"
car cela aller tjs sur la feuille 3 (chose que je ne veux pas) car par exemple lorsque je suis en A2feuil1 je vais à la feuil2 puis A3feuil1 je vais à la feuil2 ... ect
*par
"Feuil!a1" & (N + 1)
mais cela ne marche pas
et l'autre chose c'est que vous m'aviez donné les lignes suivantes:
Dim N As Integer
N = Worksheets.Count
Sheets.Add after:=Sheets(N)
Worksheets(N + 1).Name = "Feuil" & (N + 1)
mais le probléme est que ça ne me copie pas ce que j'ai dans la feuil 2 car cela crée feuil 3 , feuil4 ... ect mais elle sont vierges
merci beaucoup pour ton aide car je suis pas doué, desolé
*je remplace:
SubAddress:= _
"Feuil3!a1"
car cela aller tjs sur la feuille 3 (chose que je ne veux pas) car par exemple lorsque je suis en A2feuil1 je vais à la feuil2 puis A3feuil1 je vais à la feuil2 ... ect
*par
"Feuil!a1" & (N + 1)
mais cela ne marche pas
et l'autre chose c'est que vous m'aviez donné les lignes suivantes:
Dim N As Integer
N = Worksheets.Count
Sheets.Add after:=Sheets(N)
Worksheets(N + 1).Name = "Feuil" & (N + 1)
mais le probléme est que ça ne me copie pas ce que j'ai dans la feuil 2 car cela crée feuil 3 , feuil4 ... ect mais elle sont vierges
merci beaucoup pour ton aide car je suis pas doué, desolé
donc je lance la macro (déja créée)pour créer une nouvelle fiche clients à partir de la feuille 3 qui restera vierge
a partir de là j'ai une nouvelle feuille nommée feuille 3 (2)
le nouveau nom du client que j'aurai taper dans cette feuille 3 (2)devra se retrouver automatiquement dans la tableau de la feuille 1 (sous forme d'index pour que lors de la prochaine ouverture du projet j'ai juste à cliquer sur le nom dans la feuille 1 pour retourver la feuille client correspondant)
merci de votre aide