Reprendre l'enregistrement d'un classeur excel préalablement fermé.

shinrei69 Messages postés 75 Date d'inscription dimanche 13 mars 2011 Statut Membre Dernière intervention 30 juin 2011 - 30 mai 2011 à 08:11
shinrei69 Messages postés 75 Date d'inscription dimanche 13 mars 2011 Statut Membre Dernière intervention 30 juin 2011 - 30 mai 2011 à 13:25
Bonjour,

J'aurais besoin d'une indication, et surtout de savoir si ce que je voulais faire était possible en VBA.

Pour résumer, je travaille dans une entreprise qui à besoin de remplir un classeur excel à l'aide d'une balance, ces mesures sont envoyés dans un tableau excel une par une (leurs chiffres est aléatoires, le nombre de mesure peux varier de 1 à 5000 dirons nous). Je peux enregistrer ces donnés en format .XLS à partir d'un bouton "enregistrement" qui enregistre au nom voulu dans un répertoire X.

Ce que je voudrais faire est, avec l'aide d'un bouton, récupérer le dernier fichier enregistré et pouvoir le reprendre ou il était, c'est à dire enregistrer la valeur reprise après celle laissée. Par exemple on s’arrête à la ligne 55, on reprendrais à la ligne 56 l'enregistrement. Et la j'avoue qu'il me faudrait un peu d'aide...

En attendant votre réponse je vous remercie d'avance !

6 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
30 mai 2011 à 08:36
Bonjour,

en d'autre termes : déterminer la dernière ligne remplie d'une colonne ?
C'est tout ?


____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
0
shinrei69 Messages postés 75 Date d'inscription dimanche 13 mars 2011 Statut Membre Dernière intervention 30 juin 2011
30 mai 2011 à 08:39
Oui déterminer la dernière ligne remplie et reprendre la remplissage à N+1.
Pour déterminer j'utilise :

Private Sub CommandButton4_Click()
' Selectionne la première cellule du tableau
Range("B1").Select
' Boucle tant que pas vide
Do While Not (IsEmpty(ActiveCell))
    NbLigne = NbLigne + 1
    Selection.Offset(1, 0).Select
Loop


End Sub

Mais lorsque je ré appuie sur ma touche 'test' qui enregistre à N+1, elle recommence sur la cellule 0.
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
30 mai 2011 à 09:09
Salut
peut etre comme ça

Function Lastrow(namesheet As String) As Long
    Dim ix As Long
    
     ix = Sheets(namesheet).UsedRange.Row - 1 + Sheets(namesheet).UsedRange.Rows.count

     Lastrow = ix

 End Function

dernierligne = Lastrow("sheet1")
0
shinrei69 Messages postés 75 Date d'inscription dimanche 13 mars 2011 Statut Membre Dernière intervention 30 juin 2011
30 mai 2011 à 09:13
Nop ça marche pas. Avec celui que j'ai posté, on voit bien que la première cellule non remplie s'active (exactement ce dont j'ai besoin) mais ça ne réécrit pas directement dedans :/
0

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

Posez votre question
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
30 mai 2011 à 10:46
Bonjour,

Ce n'est tout de même pas midi à 14 heures ni la mer à boire !

Regarde ce que fait ceci.
Private Sub CommandButton1_Click()
  nouvelledonnee = "nouvelle donnee"
  Range("A" & Rows.Count).End(xlUp).Offset(1, 0).Value = nouvelledonnee
  MsgBox "regarde ta dernière cellule dans colonne A"
  donneecorrigee = "donnée corrigée"
  Range("A" & Rows.Count).End(xlUp).Value = donneecorrigee
  MsgBox "regarde la maintenant. Première correction"
  donneecorrigee = "donnée corrigée à nouveau"
  Range("A" & Rows.Count).End(xlUp).Value = donneecorrigee
  MsgBox "regarde la maintenant. Deruxième correction"
  nouvelledonnee = "nouvelle donnee"
  Range("A" & Rows.Count).End(xlUp).Offset(1, 0).Value = nouvelledonnee
  MsgBox "regarde ta dernière cellule dans colonne A, une nopuvelle donnée y figure"
End Sub

Analyse (facile), comprends (facile) et sers-t-en dans ton appli de manière intelligente (facile) en oubliant donc tes n, n+1, etc...

____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
0
shinrei69 Messages postés 75 Date d'inscription dimanche 13 mars 2011 Statut Membre Dernière intervention 30 juin 2011
30 mai 2011 à 13:25
Oui cela marche (presque).
Pour mon cas le code serait le suivant ;

Range("B" & Rows.Count).End(xlUp).Offset(1, 0).Value = poidsrecu


Mais je doit faire face à deux problèmes, le premier étant que ma case B1 du coup reçoit aussi le poids reçu et impossible de faire partir ce code à B1 :/.(erreur de compile)

Le deuxième étant qu'avec l'ancienne façon de faire et des intervalle défini, la case excel prenait une couleur ou non, ici elle n'en prend plus :(
0
Rejoignez-nous