Récupérer les valeurs de cellules de la dernière ligne

Bonjour,

Je travaille sur un fichier en plusieurs pages qui permet le relevé de compteur.

La première, "ordre de relevé", est celle sur laquelle toutes les données sont inscrites selon un ordre de passage.

Elle sert de source et la macro vient prendre les valeurs de chaque cellule pour les copier dans les autres feuilles, ceci afin de ranger les données par thème de compteur, chaque théme étant une feuille ("Cuve", "traitements des eau", "edf-gdf" etc...). Il y a donc 1 nouvelle ligne chaque semaine, composée de 80 colonnes environs. Chaque cellule se voit copiée dans sa feuille de destination ("Cuve", etc).

Pour le moment, la macro recopie chaque ligne présente... Donc à la 51ème semaine, elle copie 51 lignes. Pour le fichier 2019, je cherche à faire en sorte qu'elle ne copie à présent que la dernière ligne saisie.

Et je ne sais pas par quel bout le prendre !

Voici un extrait du code :

Sub Transfert_données()
' envoie les données simples (sans calcul) et les données de consommation (avec calcul).

Dim numero As Byte
numero = 5 'Première ligne à créer

Application.ScreenUpdating = False ' Permet de masquer les actions à l'écran

While Sheets("Ordre de relevé").Cells(numero, 3) <> ""

' Importation des données

        ' Cuve

   ' Acide sulfu 8m3 C1/2
    Sheets("Cuve").Cells(numero + 7, 2).Value = Sheets("Ordre de relevé").Cells(numero, 6).Value
   ' Soude 8m3 C1/2
    Sheets("Cuve").Cells(numero + 7, 5).Value = Sheets("Ordre de relevé").Cells(numero, 7).Value
   ' Javel 8m3 C1/2
    Sheets("Cuve").Cells(numero + 7, 8).Value = Sheets("Ordre de relevé").Cells(numero, 8).Value
    ' Passage à la ligne suivante
numero = numero + 1

Wend 'fin de boucle pour transfert des données simples
'enregistrer

ActiveWorkbook.Save

Run "erreur_relevé"

MsgBox ("                          Fin du transfert de donnée." & Chr(10) & "Pensez à vérifier les entrées en stock de la page 'Cuve'")

End Sub

Et ça n'est que la partie facile car en prime, j'ai aussi un type de compteur associé à un calcul pour reporter non pas sa valeur, mais uniquement le résultat (consommation). ce code se trouve dans le précédent, entre Wend 'fin de boucle pour transfert des données simples et 'enregistrer :

   ' Conso antioxydant, données avec calcul
Dim A As Byte
A = 5

While Sheets("Ordre de relevé").Cells(A, 2) <> ""

' Porc Cru

If Sheets("Ordre de relevé").Cells(A, 43).Value - Sheets("Ordre de relevé").Cells(A + 1, 43).Value < 0 Then
Sheets("Conso antioxydant").Cells(A + 1, 2).Value = Sheets("Ordre de relevé").Cells(A, 43).Value - (Sheets("Ordre de relevé").Cells(A + 1, 43).Value - 950)
     Else: Sheets("Conso antioxydant").Cells(A + 1, 2).Value = Sheets("Ordre de relevé").Cells(A, 43).Value - Sheets("Ordre de relevé").Cells(A + 1, 43).Value
End If
If Sheets("Ordre de relevé").Cells(A + 1, 43).Value = "" Then
Sheets("Conso antioxydant").Cells(A + 1, 2).ClearContents
End If
' Passage à la ligne suivante
A = A + 1

Wend ' Fin de la boucle

voilà... je me perds dans mes méconnaissances. Une idée de comment prendre le problème ?

Sur la nouvelle version que je suis en train de faire, je déclare les différentes feuilles pour une meilleur lisibilité... En cours...

Merci d'avance pour votre aide !!

Bonjour

Tu devrais joindre ton fichier, anonymisé au besoin.

Bye !

Bonjour,

tu as raison, ça sera plus clair.

Voilà le bébé. le module 2 est la version d'origine du transfert des données vers les feuilles, fonctionnelle en l'état, le module 1 est la prochaine version (avec tentative de déclaration... lol).

Le module 3 est pour l'envoi mail (une aide précieuse qui m'a été fournie il y a de nombreuses années, pour un autre fichier, et que j'ai réadapter ici^^)

Le module 4 sert à l'enregistrement.

Le module 5 sert au contrôle des saisies, des vérifications basiques pour palier aux fautes de frappes, notamment et aux illogismes.

J'ai souvent pris des codes de sujets d'autres utilisateurs pour les modifier et les utiliser (ou comprendre ce que j'avais sous les yeux), ça peut donc être fait de manière un peu "sale", ou "moche", même si ça tourne .

Ce fichier est une sorte de... Monstre du Dr Frankenstein de vba. Lol.

Bref...

Merci !!

Essaie en remplaçant :

n = 5 'Première ligne à créer

par :

n = range("A" & rows.Count).End(xlUp).row

Bye !

Coucou ! merci !

ça fonctionne, mais c'est B au lieu de A

n = range("B" & rows.Count).End(xlUp).row

Car la A a toujours les numéros de semaine.

j'y pense, mais de fait, il n'y a plus besoin de boucler, alors ? c'est une partie du code que je peux supprimer ?

J'essaye.

en tout cas, merci !!

mais c'est B au lieu de A

B ou A, c'est égal à partir du moment où il y a toujours une cellule non vide sur la dernière ligne.

Bye !

Rechercher des sujets similaires à "recuperer valeurs derniere ligne"