XL 2016 CODE VBA POUR DETERMINER LA DERNIERE LIGNE DE LA FEUILLE ACTIVE

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

didou78

XLDnaute Nouveau
Bonjour à tous,

Tout d'abord c'est ma 1ére demande... Alors soyez cool svp 🙂

J'ai créer un formulaire VBA pour une base de donnée et jusque là tout va bien !

Mon problème est le suivant:

Pour la MAJ de cette base de donnée je doit dispatcher les lignes dans plusieurs feuilles du même classeur.
Quand je suis sur les feuilles générer et que je veux utiliser mon formulaire je constate que mon nouveau contact se créer bien sur la feuille mais sur le n° de la dernière ligne de ma feuille BDD. Donc pas celle que j'utilise....

Je pense que cela viens de ma référence dans ma VBA pour atteindre la dernière ligne mais je ne sais pas par quoi la remplacer pour qu'elle prenne en compte la dernière ligne de la feuille (ou onglet) que j'utilise.


PS: Merci à tous par avance pour votre aide !

Voici mon code ci-dessous:

Private Sub ComboBox6_Change()

End Sub

'Pour le formulaire

Private Sub UserForm_Initialize()

Dim J As Long
Dim I As Integer

ComboBox1.ColumnCount = 1 'Pour la liste déroulante SOCIETE
ComboBox1.List() = Array("SAVAC", "SBS", "LCJ", "SAVAC VOYAGES", "SPN")

Set Ws = Sheets("BDD") 'Correspond au nom de votre onglet dans le fichier Excel

With Me.ComboBox1


For J = 2 To Ws.Range("C" & Rows.Count).End(xlUp).Row
.AddItem Ws.Range("C" & J)
Next J

End With

For I = 1 To 18
Me.Controls("TextBox" & I).Visible = True
Next I

End Sub


'Pour le bouton Nouveau contact

Private Sub CommandButton1_Click()

Dim L As Integer

If MsgBox("Confirmez-vous l'insertion de ce nouveau contact ?", vbYesNo, "Demande de confirmation d'ajout") = vbYes Then
L = Sheets("BDD").Range("a65536").End(xlUp).Row + 1 'Pour placer le nouvel enregistrement à la première ligne de tableau non vide

Range("A" & L).Value = TextBox19
 
Solution
Bonjour didou78,

quand tu veux faire référence à la feuille active (celle que tu utilises),
alors ne mets pas de référence de feuille ; 2 exemples :

L = Range("A65536").End(xlUp).Row + 1

L = Cells(Rows.Count, 1).End(3).Row + 1

---------------------------------------------------------------------------

ou si tu tiens absolument à mettre une référence de feuille :

L = ActiveSheet.Range("A65536").End(xlUp).Row + 1

L = ActiveSheet.Cells(Rows.Count, 1).End(3).Row + 1


soan
Bonjour didou78,

quand tu veux faire référence à la feuille active (celle que tu utilises),
alors ne mets pas de référence de feuille ; 2 exemples :

L = Range("A65536").End(xlUp).Row + 1

L = Cells(Rows.Count, 1).End(3).Row + 1

---------------------------------------------------------------------------

ou si tu tiens absolument à mettre une référence de feuille :

L = ActiveSheet.Range("A65536").End(xlUp).Row + 1

L = ActiveSheet.Cells(Rows.Count, 1).End(3).Row + 1


soan
 
Bonjour,

Si j'ai bien compris ta demande.
Tu détermines la dernière ligne de la feuille Sheets("bdd") par contre tu ne le fais pas pour transférer les données.
Tu écris juste Range("A" & L).value= textbox19, or si tu te trouves sur une autre feuille ça pose problème.
tu dois ecrire ainsi à Sheets("bdd").Range("A" & L).value= textbox19

ou with Sheets("bdd")
.Range("A" & L).value= textbox19 'ne pas oublier le point (.)
end with

edit: Salut Soan 😉, on s'est croisé😊
 
Pour revenir à ta réponse:

Tu détermines la dernière ligne de la feuille Sheets("bdd") par contre tu ne le fais pas pour transférer les données.

Cela fonctionne bien. Mais le problème que j'ai c'est que ça détermine justement la dernière ligne de "BDD" et pas celle ou je travail....

Pour faire simple il se met toujours sur le ligne 10889 sur toutes mes feuilles.
C'est ça qui me pose problème.

PS: Merci de prendre du temps pour mon probléme ;-)

 
Bonjour didou78,

quand tu veux faire référence à la feuille active (celle que tu utilises),
alors ne mets pas de référence de feuille ; 2 exemples :

L = Range("A65536").End(xlUp).Row + 1

L = Cells(Rows.Count, 1).End(3).Row + 1

---------------------------------------------------------------------------

ou si tu tiens absolument à mettre une référence de feuille :

L = ActiveSheet.Range("A65536").End(xlUp).Row + 1

L = ActiveSheet.Cells(Rows.Count, 1).End(3).Row + 1


soan




Milles merci à toi !!!
Tu viens de me sauver!

Et merci à Cp4 qui à pris le temps de me répondre.

Belle journée à vous et à très vite

Nadine J.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 Code VBA
Réponses
7
Affichages
638
  • Question Question
Microsoft 365 Code VBA
Réponses
10
Affichages
794
  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
79
Réponses
2
Affichages
405
Réponses
3
Affichages
599
Retour