Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1264 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [Excel] Comment obtenir la dernière valeur ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Excel] Comment obtenir la dernière valeur ?

n°1397274
jfox
Posté le 29-06-2006 à 15:57:14  profilanswer
 

Bonjour,
 
Voilà j'ai un problème ridicule mais qui me bloque catégoriquement dans mon travail.
J'ai une colonne Excel dans laquelle on enregistre des données tous les mois.
Si bien qu'il y a 12 lignes sur cette colonne.
 
Je voudrais obtenir chaque mois, la dernière valeur de cette colonne dans une cellule à part.
En quelque sorte, on a (imaginez une feuille Excel)
 
---------------------------------------------  
 
Janvier :  
 
_____A____B  
1____15____=recherchedernièrevaleurdans (A1-A5)  
2____  
3____  
4____  
5____  
...
 
B1 doit donner 15  
 
---------------------------------------------  
 
Fevrier  
 
_____A____B  
1____15____=recherchedernièrevaleurdans (A1-A5)  
2____21  
3____  
4____  
5____  
...
 
B1 doit donner 21  
 
Etc....  
 
Le problème est que je ne trouve aucune fonction qui me permette de réaliser ceci et j'ai beau les combiner les une aux autres, je n'obtiens aucun résultat.
Donc si vous pouviez m'aider à trouver une solution....par l'intermédiaire d'une fonction (si elle existe) ou d'une maccro VBA (du moins une idée de cette dernière), vous me rendriez un fier service.
 
Si vous avez besoin de plus de précision, n'hésiter pas à me le demander.
 
Merci d'avance.

mood
Publicité
Posté le 29-06-2006 à 15:57:14  profilanswer
 

n°1397281
jpcheck
Pioupiou
Posté le 29-06-2006 à 16:04:17  profilanswer
 

si tu ajoutes automatiquement dans le dernier mois, tu peux faire une lecture par le bas, c'est à dire en partant de A12
 
 
For i=1 to 12
If Range("A" & 12-i).Value<>"" and Range("B1" ).value="" then
Range("B1" ).Value=Range("A" & 12-i).Value
End if
Next i

n°1397313
jfox
Posté le 29-06-2006 à 16:41:59  profilanswer
 

D'abord merci Jpcheck de m'avoir fourni une réponse si rapidement.
 
J'ai essayé de suite ce que tu m'as proposé. Cela fonctionne plus ou moins, si l'on met la valeur 13 au lieu de 12 (sinon il ramène l'avant dernière valeur lorsque la liste est complète).
La macro fonctionne donc, mais une erreur apparait quand même.
Cette dernière me dit : "la méthode 'Range' de l'objet '_Worsheet' a échoué"
Et je n'arrive pas à identifier d'où vient le problème....surtout que même avec l'erreur on obtient bien la valeur en B1.
Mais cette erreur est vraiment génante pour moi, d'autant plus que si on applique la macro à un userform/module, elle ne marche plus du tout.
 
En tout cas, merci.
Si on peut m'apporter les corrections nécéssaires, je vous en remercierais grandement.
De mon coté, je continue de chercher.
 
Merci encore.

n°1397322
jpcheck
Pioupiou
Posté le 29-06-2006 à 16:52:59  profilanswer
 

mets avant la boucle for
worksheet(0).activate par exemple,
j'entends par là qu'il te faut activer ta feuille de travail avant de mettre les range en action.

n°1397714
jfox
Posté le 30-06-2006 à 09:27:37  profilanswer
 

Ok.
J'ai essayer de place le worksheet.activate, mais cela n'a pas fonctionné.
Comme la macro fontionne quand même...j'ai ajouté un "on error resume next" pour faire disparaitre l'erreur.
Maintenant elle fonctionne correctement.
Voilà donc la macro :
 
Sub a()
On Error Resume Next
Range("B1" ).Clear
For i = 1 To 13
If Range("A" & 13 - i).Value <> "" And Range("B1" ).Value = "" Then
Range("B1" ).Value = Range("A" & 13 - i).Value
End If
Next i
End Sub

 
Merci Jpcheck de ton aide !
Je pense que je devrais m'en sortir avec une macro de ce type.
Par contre...je pensais vraiment qu'Excel avec une fonction (ou une combinaison de fonction) qui m'aurait permis d'obtenir la dernière valeur d'une plage de cellule selectionnée dans la même colonne.
Enfin...
Merci encore  :)


Message édité par jfox le 30-06-2006 à 09:28:39
n°1397718
Paul Hood
Posté le 30-06-2006 à 09:30:24  profilanswer
 

Ton erreur vient du fait que i peut être égal à 13 et donc à la dernière boucle le range est "A0" et ca il aime pas du tout

n°1397726
jpcheck
Pioupiou
Posté le 30-06-2006 à 09:36:06  profilanswer
 

j'avais plus court en fait ^^
range("B1" ).value = Sheets("feuil1" ).Range("a65536" ).End(xlUp).Row.value
j'ai fait le .value à droite à l'arrache, mais sans tu obtiens ta premiere case en partant du bas non vide.

n°1397743
jfox
Posté le 30-06-2006 à 09:57:09  profilanswer
 

@Jpcheck
Oui ca aurait pu le faire, sauf que il y a d'autres informations différentes dans les lignes en dessous de A12.
Donc en partant de tout en bas, on tomberai sur une première valeur par exemple en A152.
Donc la première idée me convient mieux  ;)  
Merci en tout cas  :)  
 
@Paul Hood
Oki je vais vérifié ça.
Si c'est bien l'erreur je reviendrai éditer le message.
Merci  :)
 
Edit c'était bien le "13" l'erreur.
Donc au final la macro marche très bien comme ça :
 
Sub a()  
Range("B1" ).Clear  
For i = 1 To 12  
If Range("A" & 13 - i).Value <> "" And Range("B1" ).Value = "" Then  
Range("B1" ).Value = Range("A" & 13 - i).Value  
End If  
Next i  
End Sub

 
Bien joué  ;)


Message édité par jfox le 30-06-2006 à 10:21:19
n°1397746
jpcheck
Pioupiou
Posté le 30-06-2006 à 09:58:16  profilanswer
 

range("B1" ).value = Sheets("feuil1" ).Range("a13" ).End(xlUp).Row.value  alors...

n°1397747
Paul Hood
Posté le 30-06-2006 à 10:01:52  profilanswer
 

Tu peux partir du haut et descendre
range("B1" ).value = Sheets("feuil1" ).Range("a1" ).End(xldown).value

mood
Publicité
Posté le 30-06-2006 à 10:01:52  profilanswer
 

n°1397762
jfox
Posté le 30-06-2006 à 10:12:38  profilanswer
 

@Jpcheck
Ah oui....tout bétement.  :sweat:  
Désolé, je suis assez limité dans mon cas, niveau VBA.
Par contre dans ce que tu m'as donnée, il faut enlevé le "Row" qui se trouve en avant dernier.
Sinon ca ne fonctionne pas.
 
@Paul hood
Oui ca marche aussi comme ça, mais je prefère partir du bas en y réfléchissant. Ca m'arrange par rapport à mon vrai fichier (où on est en plein milieu de la feuille, où le A1 correspond à F213 et où il y a beaucoup de données autour ;) )
 
En tout cas merci à tous les deux !
Les dernieres lignes sont niquel, et je pense que je devrais m'en sortir avec ça.
(Si j'arrive à faire lancer ma macro à l'ouverture du fichier....Mais c'est un autre problème  ;) )
 
Merci encore.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [Excel] Comment obtenir la dernière valeur ?

 

Sujets relatifs
Conversion d'un Excel en PDFajouter du texte dans une valeur de ma BDD
[WORD] Publipostage à partir d'ExcelVBA/Excel : Taille de la police et d'une zone de texte
Import / Export Excel sous AccessProblème avec Excel
[VB & EXCEL] Problème de récupération de dateExport Excel probleme
[ASP.NET] Export Gridview vers Excelcopier une plage d'un fichier Excel non ouvert vers la feuille en cour
Plus de sujets relatifs à : [Excel] Comment obtenir la dernière valeur ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR