Lien entre tableau et future feuille

[Résolu]
Signaler
Messages postés
62
Date d'inscription
mardi 22 janvier 2008
Statut
Membre
Dernière intervention
25 avril 2008
-
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
-
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

Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
19
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
Messages postés
1835
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
10
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+
Messages postés
62
Date d'inscription
mardi 22 janvier 2008
Statut
Membre
Dernière intervention
25 avril 2008

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
Messages postés
62
Date d'inscription
mardi 22 janvier 2008
Statut
Membre
Dernière intervention
25 avril 2008

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
Messages postés
1835
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
10
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+
Messages postés
1835
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
10
...
Aaarrrfff !... je fais co...ie aussi moi^^

remplace:

NbFeuil = ActiveWorkbook.Sheets(Sheets.Count)

par:

NbFeuil = ActiveWorkbook.Sheets.Count

A+
Messages postés
62
Date d'inscription
mardi 22 janvier 2008
Statut
Membre
Dernière intervention
25 avril 2008

ta un mail: bigfish je t envoi un fichier excel ki t expliquera tt et tu pourra bien m aider je pense...
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
19
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
Messages postés
62
Date d'inscription
mardi 22 janvier 2008
Statut
Membre
Dernière intervention
25 avril 2008

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
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
19
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
Messages postés
62
Date d'inscription
mardi 22 janvier 2008
Statut
Membre
Dernière intervention
25 avril 2008

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
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
19
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
Messages postés
62
Date d'inscription
mardi 22 janvier 2008
Statut
Membre
Dernière intervention
25 avril 2008

donc si je fais:

 worksheets("Main").Cells(Rows.Count, "G").End(xlUp).row.select
puis
selection.Insert Shift:=xlDown
sa devrai marcher?
Messages postés
62
Date d'inscription
mardi 22 janvier 2008
Statut
Membre
Dernière intervention
25 avril 2008

j ai testé sa marche pas.... mais est ce que tu vois ce que je veux faire...?
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
19
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
Messages postés
62
Date d'inscription
mardi 22 janvier 2008
Statut
Membre
Dernière intervention
25 avril 2008

non c fai sa marche pas...
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
19
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
Messages postés
62
Date d'inscription
mardi 22 janvier 2008
Statut
Membre
Dernière intervention
25 avril 2008

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...
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
19
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
Messages postés
62
Date d'inscription
mardi 22 janvier 2008
Statut
Membre
Dernière intervention
25 avril 2008

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.