Derniere valeur non nulle par ligne

Estebanluis Messages postés 7 Date d'inscription jeudi 14 décembre 2000 Statut Membre Dernière intervention 24 juin 2008 - 23 juin 2008 à 12:13
Estebanluis Messages postés 7 Date d'inscription jeudi 14 décembre 2000 Statut Membre Dernière intervention 24 juin 2008 - 24 juin 2008 à 20:16
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

mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
23 juin 2008 à 12:19
Salut,

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

@++

le mystérieux chevalier,"Provençal, le gaulois"
Forum Office & VBA
0
Estebanluis Messages postés 7 Date d'inscription jeudi 14 décembre 2000 Statut Membre Dernière intervention 24 juin 2008
23 juin 2008 à 14:14
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 ?
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
23 juin 2008 à 14:21
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
0
Estebanluis Messages postés 7 Date d'inscription jeudi 14 décembre 2000 Statut Membre Dernière intervention 24 juin 2008
23 juin 2008 à 14:34
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Estebanluis Messages postés 7 Date d'inscription jeudi 14 décembre 2000 Statut Membre Dernière intervention 24 juin 2008
23 juin 2008 à 16:36
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... ;)
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
23 juin 2008 à 16:47
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
0
Estebanluis Messages postés 7 Date d'inscription jeudi 14 décembre 2000 Statut Membre Dernière intervention 24 juin 2008
23 juin 2008 à 17:18
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
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
23 juin 2008 à 17:24
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
0
Estebanluis Messages postés 7 Date d'inscription jeudi 14 décembre 2000 Statut Membre Dernière intervention 24 juin 2008
24 juin 2008 à 19:47
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
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
24 juin 2008 à 19:52
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
0
Estebanluis Messages postés 7 Date d'inscription jeudi 14 décembre 2000 Statut Membre Dernière intervention 24 juin 2008
24 juin 2008 à 20:16
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
0
Rejoignez-nous