Problème avec Range.End(xlUp).Select

14test-plomb.zip (484.04 Ko)

Bonjour le forum,

voici mon problème :

j'ai 2 colonnes que je voudrais remplir à l'aide de VBA. Je voudrais sélectionner la dernière cellule non vide dans chaque colonnes. le problème c'est que m^me quand les cellules sont remplies, quand je clique sur mon bouton pour remplir les colonnes, le départ se fait toujours du début et non à la suite de la dernière cellule non vide. Je vous joins un fichier pour comprendre. Il faut cliquer sur le Bouton 3 pour ouvrir le UserForm 6 pour accéder aux boutons pour remplir les colonnes.

Merci

Bonjour Rrianrrian

Waou!

L'userform6 ne doit pas être assez grand pour recevoir tous les "Private Sub CommandButton......" !!

Sérieusement :

Lorsque vous cherchez en remontant la première cellule vide vous trouvez la ligne 2041 car c'est la première cellule VIDE, par VIDE il est entendu : pas de contenu;

Or toutes les autres cellules contiennent une FORMULE, donc ne sont pas vides, même si le résultat de la formule est "".

Donc à chaque fois que VBA cherche à écrire il cherche la première ligne vide en partant du bas (6401) et trouve toujours 2401

Question: puisque vous écrivez en écrasant des formules, que font là ces formules?

Cdt

Salut le fil

Sinon avec .find attention Find peut renvoyer Nothing donc faire un test avant

LastRC = .Cells.Find("*", Lookin:=xlValues, SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row

Bonjour,

en fait cette page est une feuille de saisie qui renvoie sur une autre page. Le fichier que j'ai mis est allégé. Le but n'est pas d'écraser des formules, mais d'utiliser une combinaison des formules et des commandeButton en fonction des besoins de la saisie.

Jean-Paul, j'ai essayé avec votre écriture mais je n'y arrive pas. Pouvez-vous me donner plus de détails ?

Merci beaucoup

Salut le fil...

Je pense que tu n'y arrives pas car cela doit faire partie d'un bloc Whith End With sinon en dur WorkSheets("Tafeuille").Cells.Find...

Tiens un fonction toute prête du blog de Pierre Fauconnier, faut y prendre le temps il y a tout un tas de bonnes choses.

Function getLastCellWithData(sh As Worksheet) As Range
  Dim r As Long: r = 1
  Dim c As Long: c = 1
  Dim EnableEvents As Boolean
  Dim cell As Range

 On Error GoTo EndHandler
  EnableEvents = Application.EnableEvents
  Application.EnableEvents = False
  If sh.Cells.SpecialCells(xlCellTypeLastCell).Address <> "$A$1" Then
    Set cell = sh.Cells.Find(what:="*", after:=sh.Cells(1, 1), LookIn:=xlValues, lookat:=xlWhole, _
      searchorder:=xlByRows, SearchDirection:=xlPrevious)
    If Not cell Is Nothing Then
      r = cell.Row
      c = sh.Cells.Find(what:="*", after:=sh.Cells(1, 1), LookIn:=xlValues, lookat:=xlWhole, _
        searchorder:=xlByColumns, SearchDirection:=xlPrevious).Column
    End If
  End If
  Set getLastCellWithData = sh.Cells(r, c)

EndHandler:
  Application.EnableEvents = EnableEvents
End Function

Bonne prog

Bonjour,

oups, c'est un peu compliqué pour mes modestes compétences en excel.

Je vais quand même essayé de regarder.

Merci

Rechercher des sujets similaires à "probleme range end xlup select"