Derniere valeur non nulle par ligne

Signaler
Messages postés
7
Date d'inscription
jeudi 14 décembre 2000
Statut
Membre
Dernière intervention
24 juin 2008
-
Messages postés
7
Date d'inscription
jeudi 14 décembre 2000
Statut
Membre
Dernière intervention
24 juin 2008
-
Bonjour,



 




Novice en VBA, j’aurais besoin d’aide concernant une
fonction. Je cherche à connaître la dernière valeur par ligne sur un nombre de
colonnes variables. Ma plage de données part de la ligne 24 et s’étale sur 5 à
10 colonnes. J’aimerais pouvoir référencer ces valeurs dans une nouvelle
colonne de la même feuille.


Pourriez vous me donner le squelette de la fonction avec les
variables et la syntaxe des différentes fonctions nécessaires ?



 




Merci.

11 réponses

Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
Salut,

MsgBox Range("A24").End(xlToRight).Column

@++

le mystérieux chevalier,"Provençal, le gaulois"
Forum Office & VBA
Messages postés
7
Date d'inscription
jeudi 14 décembre 2000
Statut
Membre
Dernière intervention
24 juin 2008

Merci pour la réponse, par contre ça ne sélectionne pas ou ne donne pas le résultat que je voulais. Hormis la fonction MsgBox dont ne je n'ai pas besoin, je n'arrive pas à définir ma plage je pense. Pourrais tu me donner de nouveaux conseils ?
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
J'ai pas compris ce que tu veux.

Pour boucler de la ligne 24 à la dernière, je peux te montrer, mais je ne comprends pas quand tu dis
"par contre ça ne sélectionne pas ou ne donne pas le résultat que je voulais."

Exempel en écrivant le réultat dans Feuil2 :

dim i as integer

for i = 24 to Range("A24").End(xlDown).Row
    Sheets("Feuil2").cells(i - 23, 1).Value = Range("A" & i).End(xlToRight).Column
next i

@++

le mystérieux chevalier,"Provençal, le gaulois"
Forum Office & VBA
Messages postés
7
Date d'inscription
jeudi 14 décembre 2000
Statut
Membre
Dernière intervention
24 juin 2008

merci pour tes réponses rapides et avisées. Quand je parlais du mauvais résultat, en fait je cherche la valeur de la derniere cellule sur un certain nombre de colonnes. Je teste ta formule et te tiens informé au cas où...
Merci
Messages postés
7
Date d'inscription
jeudi 14 décembre 2000
Statut
Membre
Dernière intervention
24 juin 2008

Après plusieurs tests, je ne comprends vraiment pas la valeur qui m'est retournée. Je vais donc expliciter mon besoin car j'ai dû laisser des incompréhensions. Disons que j'ai cinq colonnes A,B,C,D,E et que je recherche la dernière valeur non nulle par ligne sur ces 5 colonnes à partir de la ligne 2. J'aimerais que toutes ces 'dernières' valeurs s'inscrivent dans une autre colonne 'F'.

Dsl si j'ai un peu de mal, je commence à peine... ;)
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
oui, j'avais oublié un petit élement, mine de rien important :

dim i as integer, col as integer

for i = 24 to Range("A24").End(xlDown).Row
    col = Range("A" & i).End(xlToRight).Column
    cells(col, i).Offset(0, 1).Value = cells(col, i).Value
next i

Je pense que ça devrait être mieux (mon code d'origine, en haut, te trouver seulement le numéro de la dernière colonne, sans pour autant donner sa valeur)

@++

le mystérieux chevalier,"Provençal, le gaulois"
Forum Office & VBA
Messages postés
7
Date d'inscription
jeudi 14 décembre 2000
Statut
Membre
Dernière intervention
24 juin 2008

A vrai dire aucune valeur n'est retournée... peut être y a t-il un pb de source ou de destination avec le offset. Je me demandais s'il fallait pas utiliser par exemple i pour lignes et j pour les colonnes ? Ou plutôt bas as long et i as integer avec les colonnes ?
Je n'en ai aucune idée mais si tu pouvais m'expliquer pourquoi ça me permettra de mieux comprendre même pour plus tard.
Merci
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
sous cette ligne
    col = Range("A" & i).End(xlToRight).Column

met
msgbox col
msgbox cells(col, i).Value

afin de vérifier les valeur.

que tu mettes i j, ou tartempion, on s'en fiche, tant que ça contient la bonne valeur

@++

le mystérieux chevalier,"Provençal, le gaulois"
Forum Office & VBA
Messages postés
7
Date d'inscription
jeudi 14 décembre 2000
Statut
Membre
Dernière intervention
24 juin 2008

Bonjour, bonjour,

j'ai pris le temps de regarder les résultats avec msg box mais ce ne sont toujours pas ceux escomptés. Les valeurs ne correspondent , ni aux valeurs inscrites, ni au nombre de lignes, de colonnes.
J'ai vraiment besoin de cette fonction pr générer des clefs primaires avec Query. Serait il possible d'avoir d'autres exemples avec une plage de données "A1:E10" ?

merci d'avance
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
T'aurais pas cellule vide, avant la dernière utilisée ?
Si tel est le cas, fait plutôt un
col = Range("Z" & i).End(xlToLeft).Column

@++

le mystérieux chevalier,"Provençal, le gaulois"
Forum Office & VBA
Messages postés
7
Date d'inscription
jeudi 14 décembre 2000
Statut
Membre
Dernière intervention
24 juin 2008

Merci pour ta disponibilité.
Justement j'ai supprimé les colonnes superflues pour ne voir les résultats que sur la plage qui m'intéressait, c'est pour ça que je redemandais sur une plage A2,E9.
Dans ma tête je vois une succession de plages ("A"& i : "E" & i) sur lesquelles je cherche la dernière valeur , sauf que cette définition de 'plage' n'a pas l'air de pouvoir constituer un range. D'où peut venir mon problème ? Pourrais tu me faire un exemple avec la plage ci dessus, càd de A2:E2 à A9:E9 ?
Merci d'avance