Copie dernière valeur de chaque type sur feuille suivante

baptbapt

XLDnaute Occasionnel
Bonjour à tous

J'ai un nouveau problème sur ma macro.
Je veu copier sur la feuille suivante les éléments d'une feuille.
Problème les éléments doivent etre la ligne correspondant au dernier nom que l'on vois.

exemple

TBS_EW FS 0,697395833 85 1
TBS_EW FS 0,697453704 75 1
TBS_EW FS 0,697511574 73 1
TBS_EW FS 0,697569444 61 1

on recopiera
TBS_EW FS 0,697569444 61 1
car c'est la dernière ligne correspondant a cet avion

Code:
'balayage des lignes et comptage des avions concernés
    Dim Avion     As String
    Dim sector     As String
    Dim Tim     As Integer
    Dim Head    As Integer
 
  J = 0
  I = 1
  Sheets("Feuil2").Cells.ClearContents
  Avion = Range(Cells(I, 1), Cells(I, 1)).Value
  sector = Range(Cells(I, 2), Cells(I, 2)).Value
  Tim = Range(Cells(I, 3), Cells(I, 3)).Value
  Head = Range(Cells(I, 4), Cells(I, 4)).Value
  Do While Cells(I, 1).Value <> ""
    If Cells(I, 1).Value <> Avion Then
        J = J + 1
        Sheets("Feuil2").Cells(J, 1).Value = Avion
        Sheets("Feuil2").Cells(J, 2).Value = sector
        Sheets("Feuil2").Cells(J, 3).Value = Tim
        Sheets("Feuil2").Cells(J, 4).Value = Head
         Avion = Cells(I, 1).Value
        sector = Cells(I, 2).Value
        Tim = Cells(I, 3).Value
        Head = Cells(I, 4).Value
    End If
    I = I + 1

  Loop
    J = J + 1
        Sheets("Feuil2").Cells(J, 1).Value = Avion
        Sheets("Feuil2").Cells(J, 2).Value = sector
        Sheets("Feuil2").Cells(J, 3).Value = Tim
        Sheets("Feuil2").Cells(J, 4).Value = Head
  
  Application.ScreenUpdating = True

Voila mon code
bon pour l'intant sa prend les données de ma dernière feuille et sa les copies en feuille 2

Sa il faudra que je le modifie.

Mais pour l'instant, comment faire pour qu'il me donne la dernière ligne, plutot que la première.

Merci
 

Creepy

XLDnaute Accro
Re : Copie dernière valeur de chaque type sur feuille suivante

Hello all,

Pour obtenir la dernière ligne non vide :

Dim Der_Ligne as integer
Der_Ligne Range("A65535").End(xlUp).Row

Tu peux modifier le Row en Column pour avoir les colonnes et le xlup en xldown, xltoright & txltoleft. A tois par contre de changer la cellule de réference.

Ensuite il n'y a plus qu'à exploiter le resultat.

@+

Creepy
 

Creepy

XLDnaute Accro
Re : Copie dernière valeur de chaque type sur feuille suivante

Re All,

Pourtant po bien compliqué m'enfin bon ... Alors :

1 - tu donnes une cellule de depart (A65535) selon le sens que tu veux donner à ta recherche

2 - Fonction End(la direction). Xlup recherche vers le haut. xldown vers le bas, xltoleft vers gauche, xltoright vers la droite.

3 - .row ou .column pour savoir ce que tu veux comme chiffre la dernière colonne ou ligne.
Bien sûr, xltoright et xltoleft sont à marier avec column et up/down avec row

Ce qui donne : cellule_de_depart.end(sens).quoi donc :

Dim Der_Ligne as integer
Der_Ligne = Range("A65535").End(xlUp).Row

Je stocke dans la variable Der_Ligne la première ligne NON vide rencontrée. Excel commence en a65535 et remonte jusqu'à trouver la première cellule non vide.

En faites ce n'est pas vide ou non vide, mais un changement d'etat par rapport à ma cellule de référence. Si ma cellule de référence est vide, alors Excel cherche la première cellule non vide et inversement.

Imagine que tu ais des doonnes en A1,A2,.. jusqu'en A7
Der_Ligne = Range("A65535").End(xlUp).Row donnera 7 ! On aurait très bien pu proceder de la facon inverse : Range("A1").End(xlDown).Row qui donnerai aussi 7 !

Dans ton cas tu avoir avoir la dernière cellule non vide donc tu n'auras plus qu'à utilise cette ligne. Si der_ligne = 7 fait un cells(der_ligne,2) par exemple

Est-ce clair ? Tu peux aussi regarder dans l'aide de VBA.

@+

Creepy
 

Discussions similaires

Réponses
11
Affichages
404

Statistiques des forums

Discussions
312 854
Messages
2 092 830
Membres
105 540
dernier inscrit
missmel59