je suis en train de débuter avec VBA et je souhaite ajouter une ligne (vierge pour le moment) dans une autre feuille de mon classeur.
Pour ce faire, j'ai trouvé comment ajouter une ligne à la fin d'un tableau et cela fonctionne parfaitement quand je le fais depuis une seule et même feuille.
Une fois que je tente de le faire sur une autre feuille, du même classeur, ça ne fonctionne plus:
Code:
Private Sub AnadirPersona_Click()
'Feuille active : TM
Sheets("TM").Select
'Selection de la premiere ligne vide
i = 10
While Not Range("f" & i & "").Value = ""
i = i + 1
Wend
'Selection de la cellule de la ligne suivante
Sheets("TM").Range("f" & i & "").Select
'Insertion d'une ligne
ActiveSheet.Rows(i & ":" & i).Select
Selection.Insert Shift:=xlDown
End Sub
Je travaille donc sur un bouton de la feuille "Hoja1", qui n'apparait donc pas dans ce code.
Dans mon cas, la ligne est bien ajoutée dans mon onglet TM, mais elle est ajoutée à la ligne 10 (et si je change la valeur de i, alors elle est ajoutée à la ligne i).
Pouvez-vous me donner un coup de main s'il vous plait?
Hum, j'ai trouvé... il manquait une référence à la feuille active à un endroit. Voilà le bon code:
Code:
Private Sub AnadirPersona_Click()
'Feuille active : TM
Sheets("TM").Select
'Selection de la premiere ligne vide
i = 10
While Not Sheets("TM").Range("f" & i & "").Value = ""
i = i + 1
Wend
'Selection de la cellule de la ligne suivante
Sheets("TM").Range("f" & i & "").Select
'Insertion d'une ligne
ActiveSheet.Rows(i & ":" & i).Select
Selection.Insert Shift:=xlDown
End Sub
Je ne comprends pas pourquoi ça ne fonctionnait pas avant. Il ne suffit pas de faire référence à la feuille au début pour qu'on travaille sur celle-ci jusqu'à nouvel ordre?
Hum, j'ai trouvé... il manquait une référence à la feuille active à un endroit. Voilà le bon code:
Code:
Private Sub AnadirPersona_Click()
'Feuille active : TM
Sheets("TM").Select
'Selection de la premiere ligne vide
i = 10
While Not Sheets("TM").Range("f" & i & "").Value = ""
i = i + 1
Wend
'Selection de la cellule de la ligne suivante
Sheets("TM").Range("f" & i & "").Select
'Insertion d'une ligne
ActiveSheet.Rows(i & ":" & i).Select
Selection.Insert Shift:=xlDown
End Sub
Je ne comprends pas pourquoi ça ne fonctionnait pas avant. Il ne suffit pas de faire référence à la feuille au début pour qu'on travaille sur celle-ci jusqu'à nouvel ordre?
Que viennent faire ces guillemets, apparemment inutiles ?
Code:
[CODE]
Private Sub AnadirPersona_Click()
'Feuille active : TM
Sheets("TM").Select
'Selection de la premiere ligne vide
i = 10
While Not Sheets("TM").Range("f" & i[COLOR="Red"][B] & ""[/B][/COLOR]).Value = ""
i = i + 1
Wend
'Selection de la cellule de la ligne suivante
Sheets("TM").Range("f" & i & "").Select
'Insertion d'une ligne
ActiveSheet.Rows(i & ":" & i).Select
Selection.Insert Shift:=xlDown
End Sub
Par ailleurs, si ta boucle cherche la dernière ligne remplie, tu peux avantageusement la remplacer par cette ligne :
Code:
i = Sheets("TM").Range("F65536").End(xlUp).Row + 1
Pour les espaces, j'avoue que je ne sais pas pourquoi ils sont là. Vu que ça fonctionnait comme ça, j'ai préféré laisser ( c'est un code adapté de ce que j'ai trouvé sur le net).
Pour la ligne que tu me donnes, je crois l'avoir déjà rencontrée sur internet avant mais là encore je n'arrive pas à la faire fonctionner. Peut etre que c'est parce que le code qui suit ma boucle est déjà trop lié aux variables de ma boucle... je ne sais pas...