Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Parcourir une feuille de calcul

  • Initiateur de la discussion David Jonc.
  • Date de début
D

David Jonc.

Guest
Bonjour au forum,

j'ai un probleme, qui parait banal, mais qui prend rapidement la tete.

oila, j'ai un userform qui permet d'ajouter des informations en fin de feuille, donc il faut que je descende ma colone jusqu'a ce que la ligne soit vide.

Pour l'instant, rien de plus simple, mais c'est là ou ça se complique.

Voici mon code:

Private Sub CommandButton1_Click()

Dim i As Integer

'active la feuille de calcul
Worksheets("feuil1").Activate

'Position en J1 (fournisseurs)
Range("J1").Select

' recherche la derniere ligne
i = 0
Do While ActiveCell.Value <> ""
ActiveCell.Offset(1, 0).Range("J1").Select
' i retient le numéro de ligne
i = i + 1
Loop

MsgBox "numéro de ligne: " & i & ActiveCell.Value

End Sub

Sauf que lorsque j'execute ça, je me retrouve en "AB3"!!

Une chose encore que je dois préciser, les colonnes "A", et les lignes 1 et 2 sont figés, j'ai selectionné la case C2, et j'ai figé les volets.

Voila, je n'arrive pas a retrouvé la bonne case.

Est ce que quelqu'un a une idée du pourquoi du comment?

Merci beaucoup

David
 
R

Robert

Guest
Salut David. salut le forum,

Le problème dans ton code est : ActiveCell.Offset(1, 0) .Range("J1") .Select
Tu le remplacerait par : ActiveCell.Offset(1, 0).Select
et tu aurais le bon message.

Mais, grâce à Thierry (un des grands de ce forum) qui m'a jeté en voyant cette méthode, tu n'utiliseras plus de boucle pour rechercher la première ligne vide d'une colonne. Mais tout simplement (d'après ton exemple) :
Range("J1").End(xlDown).Offset(1, 0).Select
si cette colonne ne comporte pas trou (cellule vide entre les cellules pleines) ou : Range("J65536").End(xlUp).Offset(1, 0).Select
Si la colonne comporte des trous et que tu ne veux pas en tenir compte pour aller juste en dessous de la dernière cellule édité.
Tu auras le même résultat que ta boucle en dix fois plus rapide (à exécuter et à écrire...)

À plus,

Robert
 
S

salim

Guest
Bonsoir David Jonc. et le Forum


David si j'ai bien compris tu veux récuperer la première cellule vide de ta colonne pour y mettre les données de ton UserForm ? Si j'ai bien saisie tu peux essayer avec ce code.

Private Sub CommandButton1_Click()
Dim i%
i = Sheets(1).Range("j65536").End(xlUp).Row + 1
Sheets(1).Range("j" & i) = 'Ici le controle de ton UserForm dans lequel tu met tes données
MsgBox "numéro de ligne: " & i & ActiveCell.Value
End Sub

@+ Salim
 
D

David Jonc.

Guest
Salut Robert, salim, le forum,

merci beucoup pour vos réponses, je suis novice en vba. J'ai passé mon aprés midi entiere a me demander pourquoi ça ne fonctionnait pas!!

Merci beaucoup.

@+ David
 

Discussions similaires

Réponses
9
Affichages
255
Réponses
2
Affichages
545
Réponses
7
Affichages
578
Réponses
5
Affichages
199
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…