Supprimer une cellule et ré écrire dessus (VBA EXCEL)

Résolu
shinrei69 Messages postés 75 Date d'inscription dimanche 13 mars 2011 Statut Membre Dernière intervention 30 juin 2011 - 27 mai 2011 à 09:14
shinrei69 Messages postés 75 Date d'inscription dimanche 13 mars 2011 Statut Membre Dernière intervention 30 juin 2011 - 27 mai 2011 à 13:28
Bonjour :D

J'aurais besoin d'un petit coup de mon sur le fait qu'un CommandButton sur mon useform appelé "Effacer dernière mesure". J'aimerais que ce bouton efface la dernière cellule Excel remplie(texte et couleur) pour pouvoir ré écrire la prochaine mesure dessus. (Sauf que cette dernière cellule Excel n'est pas définie, elle est comprise entre la seconde et la 5 000 ème) Est ce possible avec VBA de réaliser ce genre de code? Si oui, je ne serait pas contre quelques pistes!


Je vous remercie d'avance de vos réponse :)

23 réponses

shinrei69 Messages postés 75 Date d'inscription dimanche 13 mars 2011 Statut Membre Dernière intervention 30 juin 2011
27 mai 2011 à 13:28
ShayW : C'était grâce à des intervalles définit préalablement ;)
J'aurais bien aimé pour les lingots d'or malheureusement ce sont des cartons ^^


J'ai réussi, je laisse ça pour les prochains qui auront le même problème :


Private Sub CommandButton3_Click()
Dim test4 As Integer
Dim test5 As Integer
Nb_line = Nb_line - 1
test4 = MsgBox("Voulez vous effacer la dernière pesée?", vbYesNo, "Programme de pesée")
If test4 = vbYes Then
Range("B2").Offset(Nb_line, 0).ClearContents
test5 = MsgBox("La dernière valeur à été supprimée.", vbInformation, "Programme de pesée")
End If


Merci quand même à toi Vorens de t’être intéressé et impliqué! :)
3
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
27 mai 2011 à 09:32
Bonjour,

j'ai frappé "dernière cellule" en utilisant le moteur de recherche de ce forum
Regarde la page que j'ai obtenue en quelques secondes
Le reste (effacement, etc...) est élémentaire !


____________________
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
27 mai 2011 à 09:43
Oui j'ai déjà recherché et testé le "ActiveCell.SpecialCells(xlLastCell).Select"
Sauf qu'il m'efface la dernière cellule du tableau excel (La 10 000ème pour moi^^). Je voudrais qu'il efface la dernière utilisée.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
27 mai 2011 à 10:11
- un petit "regard" sur ton aide VBA t'aurait appris ce qu'est exactement xlLastCell
- tu aurais alors cherché autre bchose dans les discussions figurant dans la page vers laquelle je t'ai dirigé.
Tu aurais trouvé ta réponse ici et tu aurais ainsi gagné beaucoup de temps


____________________
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

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

Posez votre question
Vorens Messages postés 41 Date d'inscription mardi 24 mai 2011 Statut Membre Dernière intervention 12 juin 2012
27 mai 2011 à 10:51
Bonjour,


Le code suivant est à adapter à ton besoin, Il te permet de sélectionner la dernière cellule utilisée dans la colonne sélectionnée.

'Composition de l'adresse de la dernière cellules pleine dans la colonne des dates

    Sheets("Janvier").Activate
    derniereCel1 = ActiveSheet.UsedRange.Rows.Count
    Range("A" & derniereCel1).Select



Si c'est ce que tu cherche =>Valide la réponse.

Cordialement
0
Vorens Messages postés 41 Date d'inscription mardi 24 mai 2011 Statut Membre Dernière intervention 12 juin 2012
27 mai 2011 à 10:53
Après, effacer le contenu de cette cellule ne devrais pas te poser de problèmes. (Petit ajout )
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
27 mai 2011 à 11:00
Bonjour, vorens,
Le code suivant est à adapter à ton besoin, Il te permet de sélectionner la dernière cellule utilisée dans la colonne sélectionnée.

Code Visual Basic :

'Composition de l'adresse de la dernière cellules pleine dans la colonne des dates

Sheets("Janvier").Activate
derniereCel1 = ActiveSheet.UsedRange.Rows.Count
Range("A" & derniereCel1).Select


C'est du n'importe quoi !
Imagine donc que la cellule C3000 soit remplie, mais que la dernière cellule remplie de la colonne A soit la cellule A20 ...
Le UsedRange serait la plage A1:C3000 ===>> ton Rows.count sera = 3000 ===>> la cellule sélectionnée sera la A3000 ou lieu de A20


____________________
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
27 mai 2011 à 11:01
C'est à peu près ce que je cherchai en rajoutant un .ClearContent cela remet la couleur à Zéro. Mais ensuite le problème c'est quand je refait des mesures, la cellule est "sautée" et reste à 0. (Ce qui falsifie mes moyennes et autre écart type).
0
shinrei69 Messages postés 75 Date d'inscription dimanche 13 mars 2011 Statut Membre Dernière intervention 30 juin 2011
27 mai 2011 à 11:03
Rectification : Elle ne reste pas à Zéro mais est vide.
0
Vorens Messages postés 41 Date d'inscription mardi 24 mai 2011 Statut Membre Dernière intervention 12 juin 2012
27 mai 2011 à 11:07
Il à écrit "Effacer dernière mesure". On peut partir du principe qu'elle est en bas du tableau. J'ai précisé "A adapter au besoin du problème"

Pour re écrire dans la bonne cellule, lors de ton enregistrement comment tu indique au programme ou aller écrire la prochaine mesure ?
0
Vorens Messages postés 41 Date d'inscription mardi 24 mai 2011 Statut Membre Dernière intervention 12 juin 2012
27 mai 2011 à 11:08
Et effectivement, si la colonne c'est pas plein cette solution ne fonctionne pas.
0
shinrei69 Messages postés 75 Date d'inscription dimanche 13 mars 2011 Statut Membre Dernière intervention 30 juin 2011
27 mai 2011 à 11:12
Oui, la dernière mesure seras forcément en bas du tableau mais pas toujours au même endroit.

J'utilise dans mon tableau un "Nb_line = Nb_line + 1" pour écrire à la suite les valeurs.
Pour supprimer un "Nb_line = Nb_line" + la fonction clearcontent et une remise en blanc de la couleur.

Je sait que c'est normal quelle ne soit pas prise en compte, vu qu'on se met dessus pour la supprimer, et on demande de passer à la case d'après pour écrire la nouvelle valeur.
Mais je voudrais ré écrire la valeur qui la est après dans la cellule précédemment effacée.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
27 mai 2011 à 11:18
Joli mic mac, pourquoi effacer d'abord alors qu'il suffit d'écraser par les nouvelles données ?

____________________
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
Vorens Messages postés 41 Date d'inscription mardi 24 mai 2011 Statut Membre Dernière intervention 12 juin 2012
27 mai 2011 à 11:21
Il te faut aller une petite fonction qui recherche la prochaine ligne vide de ta colonne pour y écrire la prochaine mesure (ucefutu va encore dire que c'est n'imp mais essais tjrs )

C'est toujours à adapter à ton utilisation

'Déterminer ou coller la prochaine mesure

    If Mois = 12 Then
        Sheets("Décembre").Activate
        valeurA2 = Range("A2").Value
    If valeurA2 = "" Then
    Else
        Range("A1").Select
        Selection.End(xlDown).Select
        ligne_active_base = ActiveCell.Row
        Range("A" & ligne_active_base + 1).Select
    End If

End If
  
'Memorise le n° de la ligne ou coller les données.__________________________________________________________________________

    ligne_active_base = ActiveCell.Row
0
Vorens Messages postés 41 Date d'inscription mardi 24 mai 2011 Statut Membre Dernière intervention 12 juin 2012
27 mai 2011 à 11:21
Joli mic mac, pourquoi effacer d'abord alors qu'il suffit d'écraser par les nouvelles données ?


Sa cey pas faut
0
shinrei69 Messages postés 75 Date d'inscription dimanche 13 mars 2011 Statut Membre Dernière intervention 30 juin 2011
27 mai 2011 à 11:24
Joli mic mac, pourquoi effacer d'abord alors qu'il suffit d'écraser par les nouvelles données ?



Je n'y avait pas pensé tout simplement

Du coup il faudrait que je modifie quoi?
0
Vorens Messages postés 41 Date d'inscription mardi 24 mai 2011 Statut Membre Dernière intervention 12 juin 2012
27 mai 2011 à 11:31
Là sa va dépendre de ce que tu veux faire avec tes mesures. (Les archivés, faire un graphique avec la mesure en cours etc). Effacer la dernière parsque elle est fausse ou parsque t'en a plus besoin ?. tu vois comment ? ^^
0
shinrei69 Messages postés 75 Date d'inscription dimanche 13 mars 2011 Statut Membre Dernière intervention 30 juin 2011
27 mai 2011 à 11:39
C'est un système de pesée dynamique en gros. Si la valeur est mauvaise elle est indiqué par mon Useform. L'opérateur vérifie le carton et le rempli avec ce qu'il manque, efface la dernière valeur et repése jusqu’à que ce soit bon. Mais comme le nombre de pesée doit correspondre au numéro de ligne (Merci le cahier des charges bidons). Je peux pas me permettre par exemple si 500 cartons sur 1000 sont mauvais d'avoir 1500 cellules avec 500 vide.

il faudrait donc, comme le dit ucfoutu écraser la dernière et ré écrire dessus.
0
Vorens Messages postés 41 Date d'inscription mardi 24 mai 2011 Statut Membre Dernière intervention 12 juin 2012
27 mai 2011 à 11:42
0
Vorens Messages postés 41 Date d'inscription mardi 24 mai 2011 Statut Membre Dernière intervention 12 juin 2012
27 mai 2011 à 11:47
Tu peux définir une condition comme par exemple un bouton "la mesure est bonne" il écrit à la suite (Comme ton pgr le fait déjà sauf erreur).

et "la mesure est mauvaise" il ecrit par dessus, donc tu dois repérer l'adresse de la première cellule de la dernière donnée enregistrée (la mauvaise).

Je crois que tu repère pour la prochaine mesure l'adresse de la cellule suivante "Nb_line = Nb_line + 1".
T'as test de juste dire d'enregistrer la nouvelle mesure à "nb_line" ?
0
Rejoignez-nous