Trouver dernière cellule pleine d'une ligne

Everlast03

XLDnaute Occasionnel
Bonjour tout le monde !

Je cherche à trouver la dernière cellule remplie d'une ligne en VBA.
En fait j'ai un tableau que je remplie chaque mois, et je voudrais récupérer 3 valeurs du dernier mois remplit.
Exemple, si je remplie les valeur du mois d'aout, je voudrais récuperer ses 3 valeurs et le reporter sur un tableau sur une feuille différente.

Sur mon image je veux récupérer :
  • 22.69
  • 26.47
  • 64.29

De plus je voudrais appliquer ça à plusieurs feuilles.

J'espère avoir été assez clair dans mes explications ...
N'hésitez pas
 

Pièces jointes

  • Sans titre.jpg
    Sans titre.jpg
    47.6 KB · Affichages: 204
  • Sans titre.jpg
    Sans titre.jpg
    47.6 KB · Affichages: 231
  • Sans titre.jpg
    Sans titre.jpg
    47.6 KB · Affichages: 226

Everlast03

XLDnaute Occasionnel
Re : Trouver dernière cellule pleine d'une ligne

Oui voila,

N'hésitez pas à me poser des questions si vous ne comprennez pas!
Je suis vraiment bloqué la :'(
 

Pièces jointes

  • piece jointe.zip
    21 KB · Affichages: 84
  • piece jointe.zip
    21 KB · Affichages: 96
  • piece jointe.zip
    21 KB · Affichages: 82
Dernière édition:

CISCO

XLDnaute Barbatruc
Re : Trouver dernière cellule pleine d'une ligne

Bonjour

Bien sûr que c'est posssible... mais je ne sais pas exactement ce qui te conviendra le mieux.

Pour la formule en C5, tu peux écrire :
Code:
=INDIRECT(A5&"!$W$69")

ou encore, par exemple si tu écris 01/10/2010 en F1
Code:
=INDIRECT(ADRESSE(69;EQUIV(F1;Service1!A3:BI3;1);;;A5))

Après, il faut rajouter des $ pour adapter la formule qui te convient le mieux à ton besoin.

@ plus
 

natorp

XLDnaute Accro
Re : Trouver dernière cellule pleine d'une ligne

Bjr Cisco et Everlast

Je pense que des questions s'imposent, le commentaire que tu mets dans la feuille "graph" n'est pas clair du tout.
est-ce que tu souhaites que les cellules C5 à C23, D5 à D23 et E5 à E23 se remplissent toutes seules à partir du moment où tu saisis dans les onglets correspondants ?
elles ont les valeurs du mois en cours ? c'est à dire que du 01 novembre au 30 novembre elles affichent les valeurs des cellules X69, X70 et X71 pour chaque onglet "service" ?
et quend on passe au mois suivant elles changent de cellules de référence ?

tu n'ajoutes pas de colonne supplémentaire en F5 de l'onglet "graph" ? (ta flèche est mal placée ?)

à te lire, cordialement

Gérard
 

Everlast03

XLDnaute Occasionnel
Re : Trouver dernière cellule pleine d'une ligne

Bjr Cisco et Everlast

Je pense que des questions s'imposent, le commentaire que tu mets dans la feuille "graph" n'est pas clair du tout.
est-ce que tu souhaites que les cellules C5 à C23, D5 à D23 et E5 à E23 se remplissent toutes seules à partir du moment où tu saisis dans les onglets correspondants ?
elles ont les valeurs du mois en cours ? c'est à dire que du 01 novembre au 30 novembre elles affichent les valeurs des cellules X69, X70 et X71 pour chaque onglet "service" ?
et quend on passe au mois suivant elles changent de cellules de référence ?

tu n'ajoutes pas de colonne supplémentaire en F5 de l'onglet "graph" ? (ta flèche est mal placée ?)

à te lire, cordialement

Gérard

Bonjour à toi,

En fait ce que je voudrais c'est que lorsque je renseigne la colonne par exemple ici Octobre 2010, les valeurs de TF1 TF2 et TF3 soit copiées dans le tableau qui me permet de réaliser mon graph. Et lorsque le mois prochaine je remplierai ma colonne pour le mois de Novembre, que mon tableau soit actualisé avec ces valeurs.

N'hésitez pas à me dire si je suis assez clair :D

EDIT : Rien en F5
 
Dernière édition:

natorp

XLDnaute Accro
Re : Trouver dernière cellule pleine d'une ligne

Re
Avec la formule de Cisco

Tu entres en C5 :

Code:
=INDIRECT(ADRESSE(69;EQUIV(DATE(ANNEE(AUJOURDHUI());MOIS(AUJOURDHUI());1);Service1!$A$3:$BI$3;1);;;$A5))

en D5 :

Code:
=INDIRECT(ADRESSE(70;EQUIV(DATE(ANNEE(AUJOURDHUI());MOIS(AUJOURDHUI());1);Service1!$A$3:$BI$3;1);;;$A5))

en E5 :
Code:
=INDIRECT(ADRESSE(71;EQUIV(DATE(ANNEE(AUJOURDHUI());MOIS(AUJOURDHUI());1);Service1!$A$3:$BI$3;1);;;$A5))

et tu tires vers le bas les 3 cellules

cordialement, Gérard
 

Efgé

XLDnaute Barbatruc
Re : Trouver dernière cellule pleine d'une ligne

Bonjour Everlast03, natorp, CISCO,
Une proposition a mettre dans le code des feuilles concernées:
En doublecliquant sur la date du mois (ligne 3 des feuilles services) et en partant du principe que toutes les feuilles services sont identiques:
Code:
[COLOR=blue]Private Sub[/COLOR] Worksheet_BeforeDoubleClick([COLOR=blue]ByVal[/COLOR] Target [COLOR=blue]As[/COLOR] Range, Cancel [COLOR=blue]As Boolean[/COLOR])
[COLOR=blue]If[/COLOR] Intersect(Target, Range(Cells(3, 2), Cells(3, Cells(3, Columns.Count).End(xlToLeft).Column))) [COLOR=blue]Is Nothing Then Exit Sub[/COLOR]
Cancel = [COLOR=blue]True[/COLOR]
[COLOR=blue]Dim[/COLOR] f [COLOR=blue]As[/COLOR] Worksheet, Col%, i&, Tablo()
[COLOR=blue]ReDim[/COLOR] Tablo(1 [COLOR=blue]To[/COLOR] Sheets.Count - 1, 1 [COLOR=blue]To[/COLOR] 3)
Col = Target.Column: i = 0
[COLOR=blue]For Each[/COLOR] f [COLOR=blue]In[/COLOR] Worksheets
    [COLOR=blue]If[/COLOR] f.Name <> "Graph. TF" [COLOR=blue]Then[/COLOR]
        i = i + 1
        Tablo(i, 1) = f.Cells(69, Col)
        Tablo(i, 2) = f.Cells(70, Col)
        Tablo(i, 3) = f.Cells(71, Col)
        Sheets("Graph. TF").Cells(i + 4, 1) = f.Name
    [COLOR=blue]End If[/COLOR]
[COLOR=blue]Next[/COLOR] f
[COLOR=blue]With[/COLOR] Sheets("Graph. TF")
    .Range("C5").Resize([COLOR=blue]UBound[/COLOR](Tablo, 1), [COLOR=blue]UBound[/COLOR](Tablo, 2)) = Tablo
    .Activate
[COLOR=blue]End With[/COLOR]
[COLOR=blue]End Sub[/COLOR]
Cordialement
 

natorp

XLDnaute Accro
Re : Trouver dernière cellule pleine d'une ligne

Réponse en pièce jointe...

Bjr efgé, c'est superbe...

cordialement Gérard
 

Pièces jointes

  • piece jointe.zip
    20.8 KB · Affichages: 56
  • piece jointe.zip
    20.8 KB · Affichages: 59
  • piece jointe.zip
    20.8 KB · Affichages: 67

Efgé

XLDnaute Barbatruc
Re : Trouver dernière cellule pleine d'une ligne

Re
Le problème est que la dernière colonne remplie est la colonne BI (à cause des formules, je n'arrive pas à faire la différence entre une cellule remplie par un résultat de formule et une cellule remplie par une formule sans résultat ou à 0 ou a "" etc....)
C'est ma seule idée pour toi, désolé.
J'en profite quand même pour améliorer ma proposition. Celle ci devrait être plus rapide sur un grand nombre de feuilles.
Code:
[COLOR=blue]Private Sub[/COLOR] Worksheet_BeforeDoubleClick([COLOR=blue]ByVal[/COLOR] Target [COLOR=blue]As[/COLOR] Range, Cancel [COLOR=blue]As Boolean[/COLOR])
[COLOR=blue]If[/COLOR] Intersect(Target, Range(Cells(3, 2), Cells(3, Cells(3, Columns.Count).End(xlToLeft).Column))) [COLOR=blue]Is Nothing Then Exit Sub[/COLOR]
Cancel = [COLOR=blue]True[/COLOR]
[COLOR=blue]Dim[/COLOR] f [COLOR=blue]As[/COLOR] Worksheet, Col%, i&, Tablo(), Tablo2()
[COLOR=blue]ReDim[/COLOR] Tablo(1 [COLOR=blue]To[/COLOR] Sheets.Count - 1, 1 [COLOR=blue]To[/COLOR] 3)
[COLOR=blue]ReDim[/COLOR] Tablo2(1 [COLOR=blue]To[/COLOR] Sheets.Count - 1, 1 [COLOR=blue]To[/COLOR] 2)
Col = Target.Column: i = 0
[COLOR=blue]For Each[/COLOR] f [COLOR=blue]In[/COLOR] Worksheets
    [COLOR=blue]If[/COLOR] f.Name <> "Graph. TF" [COLOR=blue]Then[/COLOR]
        i = i + 1
        Tablo(i, 1) = f.Cells(69, Col)
        Tablo(i, 2) = f.Cells(70, Col)
        Tablo(i, 3) = f.Cells(71, Col)
        Tablo2(i, 1) = f.Name
    [COLOR=blue]End If[/COLOR]
[COLOR=blue]Next[/COLOR] f
[COLOR=blue]With[/COLOR] Sheets("Graph. TF")
    .Range("A5").Resize([COLOR=blue]UBound[/COLOR](Tablo2, 1), 1) = Tablo2
    .Range("C5").Resize([COLOR=blue]UBound[/COLOR](Tablo, 1), [COLOR=blue]UBound[/COLOR](Tablo, 2)) = Tablo
    .Activate
[COLOR=blue]End With[/COLOR]
[COLOR=blue]End Sub[/COLOR]
Cordialement
P.S Merci natorp du compliment :).
 

Discussions similaires

Réponses
22
Affichages
674

Statistiques des forums

Discussions
312 429
Messages
2 088 350
Membres
103 822
dernier inscrit
kader55