sélectionner et copier la dernière ligne non vide

ph.vanne

XLDnaute Junior
Bonjour à tous ,
je cherche un bout de code VBA me permettant de copier/coller la dernière ligne non vide d'un tableau excel mais situé dans un un autre fichier .

en clair (?):

je voudrais un bouton de commande dans mon fichier A avec la macro qui va bien ,qui irait donc sélectionner et copier la dernière ligne non vide dans mon fichier B/ feuil 1 ..
pour la coller dans la première ligne de la feuil 2 située également dans mon fichier B.

(j'ai ensuite une autre macro qui 'traite' cette fameuse ligne 1 de la feuil 2)

vous avez surement plein de solutions dans vos valises!

Merci d’avance !

Phil.
 

vgendron

XLDnaute Barbatruc
Bonjour,

avec ces éléments de code à adapter et corriger certainement

VB:
with workbooks("Classeur1.xlsm").sheets("Feuil2")
   .range("A"& .range("A" &rows.count).end(xlup).row).entirerow.copy
end with
with workbooks("Classeur2.xlsm).sheets("Feuil1")
  .range("A1").paste  'voir du coté de PasteSpecial pour inserer les cellules copiées
end with

sinon, mieux.. tu lances l'enregistreur de macro. et tu fais ton copier coller une fois..
et tu adaptes le code
 

ph.vanne

XLDnaute Junior
bonjour et merci ..
mais il me reste un problème :
en faite, ma dernière ligne de la colonne A contient une formule qui renvoie soit un nom, par ex: "Dupont" soit " " , la cellule est alors "vide".. mais seulement pour moi , pas pour excel...!!
.je ne comprenais pas pourquoi je me retrouvais toujours en bas de mon tableau .. là ou il n'y a plus de formule !!
la fonction serait donc : recherche de la dernière cellule comprenant la valeur " " et sélectionner et copier la ligne entière correspondante ....
as tu une solution?
 

ph.vanne

XLDnaute Junior
c 'est flou et il y a peut être même un loup ! :)

un extrait du fichier joint :
- toutes les cellule ont une" liaisons "vers un autre fichier ('Projet CAISSE 2009 Ver beta21.xls")
- je souhaite récupérer la dernier cellule a savoir , dans le cas present, " brunel forage" et copier la ligne entiere.

voilou !
 

Pièces jointes

  • extrait de creation de factures.xls
    20 KB · Affichages: 85

vgendron

XLDnaute Barbatruc
Hello

Bon.. c'est toujours pas clair:

essaie ceci..
deux méthodes de copier coller

VB:
Sub test()
Set FeuilleOrigine = ActiveWorkbook.Sheets("Feuil1")
Set FeuilleDestinationLiaison = ActiveWorkbook.Sheets("Feuil2") 'pour copie avec liaisons vers le fichier origine
Set FeuilleDestinationValeur = ActiveWorkbook.Sheets("Feuil3") 'pour copie des valeurs uniquement --> plus de liaison


With FeuilleOrigine
   .Range("A" & .Range("A" & Rows.Count).End(xlUp).Row).EntireRow.Copy
   FeuilleDestinationValeur.Range("A1").PasteSpecial (xlPasteValuesAndNumberFormats)
   .Range("A" & .Range("A" & Rows.Count).End(xlUp).Row).EntireRow.Copy Destination:=FeuilleDestinationLiaison.Range("A1")
   
End With

End Sub
 

ph.vanne

XLDnaute Junior
bonjour ,

alors je vais essayer d’être plus précis .. :

je voudrais juste le "bout de code" qui va aller me sélectionner la dernière cellule .....avec du texte !
dans le cas du fichier joint ,la ligne 11 ,contenant le nom habish..

la cellule en dessous ,(la ligne 12) est vide mais en fait contient la valeur de la cellule AT 1504 issue d'un autre fichier ,
(d'ou la formule :

='C:\Users\Hotel Jaures\Documents\DOSSIERS HOTEL\COMPTA ET GESTION\CAISSES JAURES ET ALLEES\CAISSE 2010\[Projet CAISSE 2009 Ver beta21.xls]2016'!AT1504 )

et dont la valeur est : " " , et pour moi la cellule était vide , en fait elle n'est pas vide ,mais elle ne contient pas de texte !
d'ou peut être ton incompréhension ..

est ce plus clair ... ?

Phil.
 

Pièces jointes

  • extrait 2.xls
    26.5 KB · Affichages: 87

vgendron

XLDnaute Barbatruc
Hello

avec ce code alors..
VB:
Sub test()
Set FeuilleOrigine = ActiveWorkbook.Sheets("Feuil1")
Set FeuilleDestinationLiaison = ActiveWorkbook.Sheets("Feuil2") 'pour copie avec liaisons vers le fichier origine
Set FeuilleDestinationValeur = ActiveWorkbook.Sheets("Feuil3") 'pour copie des valeurs uniquement --> plus de liaison


With FeuilleOrigine
   last = .Range("A" & Rows.Count).End(xlUp).Row
   Do
    If Range("A" & last) = "" Then last = last - 1
    Loop Until Range("A" & last) <> ""
     
    .Range("A" & last).EntireRow.Copy
    FeuilleDestinationValeur.Range("A1").PasteSpecial (xlPasteValuesAndNumberFormats)
    .Range("A" & last).EntireRow.Copy Destination:=FeuilleDestinationLiaison.Range("A1")
   
End With

End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 894
Messages
2 093 381
Membres
105 713
dernier inscrit
Karimov