[Résolu] Code VBA : Dernière ligne remplie. De 2007 vers 2003

Tsoin42

XLDnaute Nouveau
Bonjour à tous,
N.B : Le fichier en PJ est un aperçu du vrai fichier mais le bug est bel et bien là. ;)


Je suis coincée face à un problème de version Excel.

J'ai crée mes fichiers sous Excel 2007 et ils comportent des formulaires qui permettent de saisir des données qui seront placées automatiquement grâce à un code (voir ci-dessous). Dans certaines colonnes, il y a des formules qui sont étendues jusqu'aux lignes 1200 environ.

Le code permet d'aller chercher la dernière ligne remplie et colle donc les informations saisies en dessous. Le fichier fonctionnait super bien. Sauf que dans l'atelier, les PC fonctionnent sous Excel 2003. Et là...c'est le drame!

Quand j'entre les saisies sous XL 2003, il place correctement les premières saisies mais arrivé au Range D, les données sont rentrées tout en bas, c'est à dire en dessous de la dernière ligne de formule.

J'en déduis donc qu'XL 2003 compte mes formules =SI comme des lignes remplies, y'a t-il un moyen d'éviter ce problème? Parce que je ne peux pas du tout enlever ces formules :(.

Cordialement,

Tsoin.


Code :
Range("E" & Range("E" & Cells.Rows.Count).End(xlUp).Row + 1).Select
ActiveCell.Value = ListBox1.Value

Range("A" & Range("A" & Cells.Rows.Count).End(xlUp).Row + 1).Select
ActiveCell.Value = CDate(TextBox1.Text)

Range("D" & Range("D" & Cells.Rows.Count).End(xlUp).Row + 1).Select
ActiveCell.Value = TextBox3.Value
________________BUG à partir d'ici___________________________

Range("F" & Range("F" & Cells.Rows.Count).End(xlUp).Row + 1).Select
ActiveCell.Value = TextBox4.Value

Range("G" & Range("G" & Cells.Rows.Count).End(xlUp).Row + 1).Select
ActiveCell.Value = TextBox7.Value
Range("J" & Range("J" & Cells.Rows.Count).End(xlUp).Row + 1).Select
ActiveCell.Value = TextBox9.Value

Range("O" & Range("O" & Cells.Rows.Count).End(xlUp).Row + 1).Select
ActiveCell.Value = TextBox12.Value

Range("N" & Range("N" & Cells.Rows.Count).End(xlUp).Row + 1).Select
ActiveCell.Value = TextBox11.Value
 

Pièces jointes

  • bug macro 2003.zip
    193.3 KB · Affichages: 36
Dernière édition:

Misange

XLDnaute Barbatruc
Re : Code VBA : Dernière ligne remplie. De 2007 vers 2003

Bonjour

au lieu de faire des feuilles avec des lignes préremplies jusqu'à la ligne 1200 utilise la fonctionnalité tableaux (listes dans excel 2003). Quand tu écris dans la première ligne vide sous le tableau, ca crée automatiquement une nouvelle ligne qui s'insère dans le tableau, recopie les formules et format de la ligne précédente.
Plus d'infos ici
Ce lien n'existe plus.
dans les pages suivantes tu trouveras comment utiliser les tableaux en VBA

Dans ton code, évite les select :
Range("N" & Range("N" & Cells.Rows.Count).End(xlUp).Row + 1).Select
ActiveCell.Value = TextBox11.Value

devient
Range("N" & Range("N" & Cells.Rows.Count).End(xlUp).Row + 1).Value = TextBox11.Value
 

Tsoin42

XLDnaute Nouveau
Re : Code VBA : Dernière ligne remplie. De 2007 vers 2003

Bonjour Misange, merci de ta réponse je vais regarder ce cours de près. Le truc c'est que quand j'avais fait ce genre de tableau, mon XL placait les saisies à la dernière ligne de ce tableau, du coup je pensais qu'on ne pouvait pas faire.

Je reviendrai vers vous si je re-recontre le même problème ;).

Merci aussi pour ta remarque sur mon code. Je débute et je n'ai que les forums Internet pour trouver des cours alors je brode autour des codes comme je peux ;D.
 

pierrejean

XLDnaute Barbatruc
Re : Code VBA : Dernière ligne remplie. De 2007 vers 2003

Bonjour Tsoin42

Bises Misange

Par prudence il est préférable de ne calculer le numéro de la dernière ligne qu'une fois (cela donne l'assurance que toutes les saisies seront faites sur la même ligne)
Comme il n'y a pas formule en colonne A je te suggère
Teste et dis nous

Code:
Private Sub CommandButton1_Click()
derlin = Range("A" & Rows.Count).End(xlUp).Row + 1
Range("A" & derlin) = TextBox1.Value
Range("D" & derlin) = TextBox3.Value
Range("F" & derlin) = TextBox3.Value
Range("E" & derlin) = ListBox1.Value
Range("G" & derlin) = TextBox7.Value
Range("J" & derlin) = TextBox9.Value
Range("O" & derlin) = TextBox12.Value
Range("H" & derlin) = TextBox11.Value
Unload Me
End Sub
 

Tsoin42

XLDnaute Nouveau
Re : Code VBA : Dernière ligne remplie. De 2007 vers 2003

Bonjour,

Un grand merci à Pierrejean, le code fonctionne très bien sur mon fichier. Merci pour les explications à vous deux, il est vrai que mon code était trop lourd pour si peu ! ;)

Encore merci et bonne journée à vous.

Cordialement,

Tsoin.
 

Statistiques des forums

Discussions
312 489
Messages
2 088 853
Membres
103 975
dernier inscrit
denry