Lien entre tableau et future feuille

Résolu
tomy7 Messages postés 62 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 25 avril 2008 - 22 févr. 2008 à 11:17
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 - 25 févr. 2008 à 11:26
J ai poste un prob sur site: il y a une piece jointe a telecharger qui explique mon prob
http://www.developpez.net/forums/showthread.php?t=496140

Svp allez voir.

merci

22 réponses

cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
25 févr. 2008 à 11:17
Ajoute 1 ...
Line = Sheets("Main").Cells(Rows.Count, "G").End(xlUp).Row + 1

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 15
22 févr. 2008 à 15:56
t'es gentil toi ! tu donnes un lien qui renvois sur un poste qui contient un autre lien qui te demande un login et un password
Et avec ca tu voudrait que l'on t'aide ? Tsssssss...
Pose ton probleme ici !

A+
tomy7 Messages postés 62 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 25 avril 2008
22 févr. 2008 à 16:04
j aimerai bien mais on peu pas envoyer de piece jointe ici ... en tt cas j ai avancé

<!-- END TEMPLATE: bbcode_code -->en fete j aimerai cree un lien entre un tabeau qui est sur la feuille et des feuilles qui ne sont pas creer mais qui peuvet etre creer avec un bouton ... j ai un fichier excel qui explique clairement le prob mais je c pas comment l envoyer ici
tomy7 Messages postés 62 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 25 avril 2008
22 févr. 2008 à 16:58
si quelqu un sait comment faire sa sa ferai avancer mon prob:


Private Sub CommandButton25_Click()
Worksheets("Add").Copy After:=ActiveWorkbook.Sheets(Sheets.Count)
ActiveSheet.Name = "Add" & Sheets.Count - 3
ActiveSheet.visible = True
Worksheets("Main").Select
k = 1
i = 279
MsgBox i
MsgBox k
Worksheets("Main").Range("G" & i & ":N" & i).Select
Selection.Insert Shift:=xlDown
Worksheets("Main").Range("G" & i).Value = Worksheets("Add" & k).Range("C5").Value
i = i + 1
k = k + 1


End Sub


j aimerai que i soit incrementer de 1 a chaque clic sur le bouton et k aussi mais la mon code ne fait pas sa ....

une idee merci

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 15
22 févr. 2008 à 21:02
Tu te compliques la vie !




Private Sub CommandButton25_Click()
    dim NbFeuil as long, NomNewFeuil as string
    NbFeuil = ActiveWorkbook.Sheets(Sheets.Count)
    Worksheets("Add").Copy After:= NbFeuil
    NomNewFeuil = "Add" & NbFeuil -3
    ActiveSheet.Name = NomNewFeuil
    ActiveSheet.visible = True 'pourquoi cette ligne ? Une nouvelle feuille est toujours visible par defaut !?!
    Worksheets("Main").Select
    k = NbFeuil -3 'sera incrementé a chaque nouvelle creation de feuille mais ne sert a rien pour le moment !
     'A partir d'ici je ne comprend pas ce que tu veux faire ?!?!
    i = 279 'c'est quoi cette valeur de 279 ?
    Worksheets("Main").Range("G" & i & ").Select
    Selection.Insert Shift:=xlDown 'pourquoi cette ligne ?
    Worksheets("Main").Range("G" & i).Value = Worksheets(NomNewFeuil ).Range("C5").Value 'comment la feuille main peut elle prendre une valeur d'une feuille nouvellement créée alors que l'on a encore rien ecrit dans cette derniere ???
End Sub



Y a du boulot !

A+
bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 15
22 févr. 2008 à 21:07
...
Aaarrrfff !... je fais co...ie aussi moi^^

remplace:

NbFeuil = ActiveWorkbook.Sheets(Sheets.Count)

par:

NbFeuil = ActiveWorkbook.Sheets.Count

A+
tomy7 Messages postés 62 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 25 avril 2008
23 févr. 2008 à 12:17
ta un mail: bigfish je t envoi un fichier excel ki t expliquera tt et tu pourra bien m aider je pense...
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
23 févr. 2008 à 13:21
Pour conserver la veleur de la ligne (ici 279 ???) tu peux déclarer la variable dans un module en Public.
Public LigneCourante as Integer

Dans WorkBook_Open(), tu lui affectes une valeur
LigneCourante = 279

Dans le code de ton bouton, tu l'incrémentes
LigneCourante = LigneCourante + 1

Pour insérer une ligne
Rows(LigneCourante).Insert xlShiftDown
ou tu insères des espaces dans un Range précis comme tu l'utilises déjà
Range("G" & LigneCourante).Insert xlShiftDown

Mais comme le dit BigFish (salut) pourquoi 279 ?
Est-ce la première ligne vide de ta feuille ? si oui, n'utilise pas de valeur fixe comme ça et détermine plutôt quelle est cette dernière ligne par code. Sinon, il faudrait que tu expliques un peu mieux ton problème.

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
tomy7 Messages postés 62 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 25 avril 2008
25 févr. 2008 à 10:00
j ai un grand tableau et en dessous un petit
et 279 c la derniere ligne de mon petit tableau.

en faite le but est j appuie sur un bouton et je crée une copy d une feuille... et en meme temps j ajoute des ligne a mon petit tableau avec des liens  qui sont relié a la nouvelle feuille .

ex ma cellule G279 doit etre egale a =Add1!$C$5 Add 1 etant ma nouvel feuille , tu comprends...

mtn j ai trouver une partie du code qui m aide a faire sa le seul ennuie c que j arrive pas a inserer une ligne...

Private Sub CommandButton25_Click()


Dim NewSh As Worksheet
Worksheets("Add").Copy After:=ActiveWorkbook.Sheets(Sheets.Count)
Set NewSh = ActiveWorkbook.Worksheets(Sheets.Count)
NewSh.Name = "Add" & Sheets.Count - 3
NewSh.visible = True
Worksheets("Main").Select
Range("G" & Rows.Count).Insert Shift:=xlDown   sa fonctionne pas , ya pas de bug y plante pas , mais aucun ajout de ligne
Worksheets("Main").Cells(Rows.Count, "G").End(xlUp).Offset(1, 0).FormulaLocal = "=" & NewSh.Name & "!" & NewSh.Cells(5, "C").Address


End Sub
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
25 févr. 2008 à 10:26
Range("G" & Rows.Count).Insert Shift:=xlDown

Rows.Count = 65536 (versions 2003 et antérieures)
Tu essaies donc d'insérer une ligne à la toute fin de la feuille, ce qui est impossible, en principe...
Tu dois donc déterminer plus précisément où tu veux insérer cette ligne.


MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
tomy7 Messages postés 62 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 25 avril 2008
25 févr. 2008 à 10:28
mais pourtant quand je fais sa ...Worksheets("Main").Cells(Rows.Count, "G").End(xlUp).Offset(1, 0).FormulaLocal = "=" & NewSh.Name & "!" & NewSh.Cells(5, "C").Address

ma cellule G279 devient bien egale a  une autre cellule de la nouvelle feuille...et j utilise rows.count
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
25 févr. 2008 à 10:35
Tu dois faire la différence entre
Range("G" & Rows.Count)
et Cells(Rows.Count, "G").End(xlUp).Row

Le premier te donne le nombre de lignes totales de la feuille.
Le deuxième est plutôt un "mouvement"... Dans la colonne G, se positionne en bas (Rows.Count) et remonte (xlUp) jusqu'à la première ligne qui contient du texte.

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
tomy7 Messages postés 62 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 25 avril 2008
25 févr. 2008 à 10:38
donc si je fais:

 worksheets("Main").Cells(Rows.Count, "G").End(xlUp).row.select
puis
selection.Insert Shift:=xlDown
sa devrai marcher?
tomy7 Messages postés 62 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 25 avril 2008
25 févr. 2008 à 10:41
j ai testé sa marche pas.... mais est ce que tu vois ce que je veux faire...?
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
25 févr. 2008 à 10:42
Essaie-le et tu verras bien...

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
tomy7 Messages postés 62 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 25 avril 2008
25 févr. 2008 à 10:47
non c fai sa marche pas...
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
25 févr. 2008 à 10:50
Peux-tu remettre le code que tu utilises ?
Et si ça ne fonctionne pas, est-ce que tu reçois un message d'erreur ? si oui lequel et quel numéro ?

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
tomy7 Messages postés 62 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 25 avril 2008
25 févr. 2008 à 10:54
pas de probleme , alors voici mon code:

Dim NewSh As Worksheet
    Worksheets("Add").Copy After:=ActiveWorkbook.Sheets(Sheets.Count)
    Set NewSh = ActiveWorkbook.Worksheets(Sheets.Count)
    NewSh.Name = "Add" & Sheets.Count - 3
    NewSh.visible = True
    Worksheets("Main").Cells(Rows.Count, "G").End(xlUp).Rows.Select
    Selection.Insert Shift:=xlDown
    Worksheets("Main").Cells(Rows.Count, "G").End(xlUp).Offset(1, 0).FormulaLocal = "=" & NewSh.Name & "!" & NewSh.Cells(5, "C").Address
    Worksheets("Main").Select

en vert la ou sa bug  et le message est erreu 1004 la methode range a echoué.

tt les autres lignes sont bonnes car je les ai testé sans y a juste l insertion qui merdasse...
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
25 févr. 2008 à 11:04
Essaie comme ceci
    Dim Ligne As Long
   
    Ligne = Sheets("Main").Cells(Rows.Count, "G").End(xlUp).Row
    Sheets("Main").Rows(Ligne).Insert xlShiftDown

Ça devrait fonctionner en autant qu'il existe une feuille nommée "Main"

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
tomy7 Messages postés 62 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 25 avril 2008
25 févr. 2008 à 11:11
sa marche sauf que sa m insert la ligne au desssus et je veux qu elle s insere en dessous:

   Line = Sheets("Main").Cells(Rows.Count, "G").End(xlUp).Row
    Sheets("Main").Rows(Line).Insert xlShiftDown

pourtant c bien xlshiftdown.
Rejoignez-nous