XL 2013 Cellule vide VBA

karinette

XLDnaute Occasionnel
Bonjour à tous les experts,
J'ai une extraction d'un fichier que je déplace dans un autre (une plage de formule).
Lorsque je les colle dans mon fichiers, c'est en collage special / Valeur.
Mon souçis est lorsque je vais chercher la dernière cellule vide (Ctrl + Fleche bas ou par macro avec : "Range("A1").Select / Selection.End(xlDown).Select") cela va sur la dernière cellule vide mais en prenant compte du copier collé de l'extraction (alors que les cellules sont vide ?!).
Est-ce que le fait d'avoir une formule peut avoir une influence et déclarer la cellule vide en "non-vide" ...
J'avoue que je seche ...
J'espère avoir été clair ;)
J'ai mit le fichier en PJ. la macro devrait me placer en A4 (première vide), mais me place en A25 (??).
Merci de vos retours :)
 

Pièces jointes

  • Book1.xlsm
    18.2 KB · Affichages: 6

jui42

XLDnaute Junior
Je pense que tu as un tableau qui va jusqu'à la ligne 24 et donc par défaut la dernière valeur vide du tableau en question est bien la ligne 24.
En effet, si tu essaye de tirer les cellule colorié en bleu vers le bas tu verra que ta fonction sélectionne bien la dernière cellule en bleu donc en soi, ce n'est pas la recherche le problème mais l'extraction je pense
 

vgendron

XLDnaute Barbatruc
hello

si tu mets la formule =Estvide(A25) dans une colonne de test: tu verras que tes lignes A4 à A25 ne sont pas vides
j'avais d'abord pensé à un espace, ou un retour chariot..
c'est pas ca.. l'origine de ton pb vient surement de ta formule initiale qui doit sans doute placer un caractère spécial ou autre: et quand tu fais ton Ctrl C CtrV valeur, il en reste une "trace"
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour à tous :),

Suivant ce que vous désirez, essayez une des deux procédures (code dans le module de "Sheet1") :
VB:
Sub PremiereCelluleVide()
   Cells(Application.Evaluate("=SMALL(IF(a1:a9999="""",ROW(a1:a9999),""""),1)"), "a").Select
End Sub

Sub PremiereCelluleVideAprèsDerniereDonnee()
   Cells(Application.Evaluate("=LARGE(IF(a1:a9999<>"""",ROW(a1:a9999),""""),1)+1"), "a").Select
End Sub

La valeur 9999 est à modifier pour être supérieure au nombre de lignes collées.
 

Pièces jointes

  • karinette- Book1- v1.xlsm
    18.5 KB · Affichages: 4
Dernière édition:

karinette

XLDnaute Occasionnel
si tu executes ce bout de code avant de te placer sur la derniere ligne, ca "corrige" le pb
VB:
Sub test2()
Dim tabdata() As Variant
tabdata = Range("A1:A30").Value

Range("A1:A30") = tabdata
End Sub
Je pense effectivement que le copié/collé doit garder quelque chose en "non vide" ...
Par contre la parade est efficace, ça marche parfaitement !!!
Encore merci pour le code :)
 

Discussions similaires

Statistiques des forums

Discussions
312 211
Messages
2 086 294
Membres
103 171
dernier inscrit
clemm