Supprimer une cellule et ré écrire dessus (VBA EXCEL) [Résolu]

Messages postés
75
Date d'inscription
dimanche 13 mars 2011
Dernière intervention
30 juin 2011
- - Dernière réponse : shinrei69
Messages postés
75
Date d'inscription
dimanche 13 mars 2011
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 :)
Afficher la suite 

Votre réponse

20/23 réponses

Meilleure réponse
Messages postés
75
Date d'inscription
dimanche 13 mars 2011
Dernière intervention
30 juin 2011
3
Merci
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é! :)

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 120 internautes nous ont dit merci ce mois-ci

Commenter la réponse de shinrei69
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
264
0
Merci
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
Commenter la réponse de ucfoutu
Messages postés
75
Date d'inscription
dimanche 13 mars 2011
Dernière intervention
30 juin 2011
0
Merci
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.
Commenter la réponse de shinrei69
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
264
0
Merci
- 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
Commenter la réponse de ucfoutu
Messages postés
42
Date d'inscription
mardi 24 mai 2011
Dernière intervention
12 juin 2012
0
Merci
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
Commenter la réponse de Vorens
Messages postés
42
Date d'inscription
mardi 24 mai 2011
Dernière intervention
12 juin 2012
0
Merci
Après, effacer le contenu de cette cellule ne devrais pas te poser de problèmes. (Petit ajout )
Commenter la réponse de Vorens
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
264
0
Merci
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
Commenter la réponse de ucfoutu
Messages postés
75
Date d'inscription
dimanche 13 mars 2011
Dernière intervention
30 juin 2011
0
Merci
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).
Commenter la réponse de shinrei69
Messages postés
75
Date d'inscription
dimanche 13 mars 2011
Dernière intervention
30 juin 2011
0
Merci
Rectification : Elle ne reste pas à Zéro mais est vide.
Commenter la réponse de shinrei69
Messages postés
42
Date d'inscription
mardi 24 mai 2011
Dernière intervention
12 juin 2012
0
Merci
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 ?
Commenter la réponse de Vorens
Messages postés
42
Date d'inscription
mardi 24 mai 2011
Dernière intervention
12 juin 2012
0
Merci
Et effectivement, si la colonne c'est pas plein cette solution ne fonctionne pas.
Commenter la réponse de Vorens
Messages postés
75
Date d'inscription
dimanche 13 mars 2011
Dernière intervention
30 juin 2011
0
Merci
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.
Commenter la réponse de shinrei69
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
264
0
Merci
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
Commenter la réponse de ucfoutu
Messages postés
42
Date d'inscription
mardi 24 mai 2011
Dernière intervention
12 juin 2012
0
Merci
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
Commenter la réponse de Vorens
Messages postés
42
Date d'inscription
mardi 24 mai 2011
Dernière intervention
12 juin 2012
0
Merci
Joli mic mac, pourquoi effacer d'abord alors qu'il suffit d'écraser par les nouvelles données ?


Sa cey pas faut
Commenter la réponse de Vorens
Messages postés
75
Date d'inscription
dimanche 13 mars 2011
Dernière intervention
30 juin 2011
0
Merci
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?
Commenter la réponse de shinrei69
Messages postés
42
Date d'inscription
mardi 24 mai 2011
Dernière intervention
12 juin 2012
0
Merci
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 ? ^^
Commenter la réponse de Vorens
Messages postés
75
Date d'inscription
dimanche 13 mars 2011
Dernière intervention
30 juin 2011
0
Merci
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.
Commenter la réponse de shinrei69
Messages postés
42
Date d'inscription
mardi 24 mai 2011
Dernière intervention
12 juin 2012
0
Merci
Commenter la réponse de Vorens
Messages postés
42
Date d'inscription
mardi 24 mai 2011
Dernière intervention
12 juin 2012
0
Merci
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" ?
Commenter la réponse de Vorens

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.