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

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

soan

XLDnaute Barbatruc
Inactif
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
 

cp4

XLDnaute Barbatruc
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é😊
 

didou78

XLDnaute Nouveau
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 ;-)

 

didou78

XLDnaute Nouveau
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.
 

Discussions similaires

  • Question
Microsoft 365 Code VBA
Réponses
10
Affichages
750

Statistiques des forums

Discussions
315 127
Messages
2 116 544
Membres
112 776
dernier inscrit
MIZOULE