Macro excel permettant d'effacer le contenu d'une cellule

Mister alex

XLDnaute Nouveau
Bonjour à tous,
J'aurais besoin d'une macro qui me permettrait d'effacer le contenu des cellules (de la colonne G) si les cellules (de la colonne F) sont vides.
Je sais qu'il est possible de le faire grâce à une fonction si sans passer par une macro, ce qui donnerait: =si(F1="";"") mais malheuresement je suis obligé de passer par une macro.
Ai-je été assez clair? Manque t-il certaines informations?
Merci par avance,
Alex
 

francedemo

XLDnaute Occasionnel
Re : Macro excel permettant d'effacer le contenu d'une cellule

bonjour Alex,

tu peux essayer:

Code:
Option Explicit

Sub EffaceCellule()

Dim Cel As Range

For Each Cel In Range("F1:F" & .[F65536].End(xlUp).Row)
    If Cel.Value = "" Then Cel.Offset(0, 1).ClearContents
Next Cel

End Sub

à+
 

Mister alex

XLDnaute Nouveau
Re : Macro excel permettant d'effacer le contenu d'une cellule

Bonjour Francedemo,
Merci pour ta réponse.
J'ai essayer ton code mais ca ne marche pas...
Peut-etre n'ai-je pas été assez clair dans mes explications?
En gros, grâce à une fonction si, dans ma colonne F j'ai un commentaire qui s'affiche dès qu'une cellule de la colonne E est égale à 0 ("envoi mail). L'action d'envoyer le mail va grâce à une macro va inscrire "oui" dans ma colonne G (grâce à une macro).
Dès que la cellule de la colonne E n'est plus égale à 0, le commentaire ("envoi mail") s'efface automatiquement mais pas le "Oui" de la colonne G.
Peut-être que ca serait plus clair pour toi si je laisser mon fichier en PJ?
Merci par avance,
A+
 

Mister alex

XLDnaute Nouveau
Re : Macro excel permettant d'effacer le contenu d'une cellule

Okay, je te mets le fichier en PJ.
 

Pièces jointes

  • Copie (2) de Gestion de stock atelier macro.zip
    202.9 KB · Affichages: 53
  • Copie (2) de Gestion de stock atelier macro.zip
    202.9 KB · Affichages: 48
  • Copie (2) de Gestion de stock atelier macro.zip
    202.9 KB · Affichages: 47

francedemo

XLDnaute Occasionnel
Re : Macro excel permettant d'effacer le contenu d'une cellule

dsl, après réflexion...

essaye :
Sub EffaceCellule()

Dim Cel As Range
Application.EnableEvents = True

For Each Cel In Range("F6:F" & [F65536].End(xlUp).Row)
If Cel.Value = "" Then Cel.Offset(0, 1).ClearContents
Next Cel
Application.EnableEvents = False

End Sub
(j'avais laissé le point avant F[65536]... (nul de nul :()
là, ça doit coller

par contre je t'avoue, j'ai pas tout compris dans ta structure de code...
pourquoi tout mettre dans ThisWorkbook ? (et pas dans des modules séparés...)
pourquoi recréer un fichier pour le supprimer après...

enfin, ça te regarde

cordialement

edit: évite de poster un fichier aussi complet avec les noms et tout et tout, ce sont des données confidentielles (j'imagine) qui ne regarde que toi, quand il y a besoin, crée juste un petit fichier avec la même structure mais sans données confidentielles
 
Dernière édition:

Mister alex

XLDnaute Nouveau
Re : Macro excel permettant d'effacer le contenu d'une cellule

Ca ne marche toujours pas...
C'est peut etre moi qui ait mal placé le code? je l'ai mis dans thisworbook à la fin de la sub envoimail(), c'est peut etre pour ça?
Et pour répondre à ta question, je t'avoue que je suis débutant dans VBA, donc j'ai encore un peu de mal avec la structure des macro.
Par si je créais un fichier pour le supprimer juste après, c'est parceque le fichier que je créais est envoyer directement par mail donc je n'ai plus de raison pour le garder.
En tout cas je te remercie pour ton aide,
Peut etre sauras tu d'où vient le problème?
 

francedemo

XLDnaute Occasionnel
Re : Macro excel permettant d'effacer le contenu d'une cellule

re,
avec ce que j'ai compris:
tu remplis les colonnes F par formules, puis la colonne G par macro après envoi du mail
donc je pense qu'il faudrait mettre ma macro dans ton "Private Sub Workbook_SheetChange"

ça devient:
Code:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)

Dim NbEnvoi As Long, NbFait As Long

'===Vérifier s'il existe des lignes avec : envoi mail
For Each Cel In Range("F1:F" & [F65536].End(xlUp).Row)
    If Cel.Value = "" Then Cel.Offset(0, 1).ClearContents
Next Cel
NbEnvoi = Application.CountIf(Sheets("Stock existant").Range("F:F"), "envoi mail")
NbFait = Application.CountIf(Sheets("Stock existant").Range("G:G"), "Oui")
If NbEnvoi > NbFait Then Call EnvoiMail

End Sub

à essayer
 

francedemo

XLDnaute Occasionnel
Re : Macro excel permettant d'effacer le contenu d'une cellule

je pense que c'est parce qu'il est dans ton "Private Sub Workbook_SheetChange"
et qu'il relance le calcul à chaque fois, d'ou le temps d'attente

essaye de le mettre dans :
Code:
Sub EnvoiMail()

Dim DLig As Long, Lig As Long
Dim oCDO
Dim sPath As String
Dim wbk As Workbook
Dim Cel As Range
Dim NbEnvoi As Long
Dim NbFait As Long

'===Si la réponse est non on sort de la sub
If MsgBox("voulez-vous commander ?", vbYesNo, "Stock critique") = vbNo Then Exit Sub
For Each Cel In Range("F1:F" & [F65536].End(xlUp).Row)
    If Cel.Value = "" Then Cel.Offset(0, 1).ClearContents
Next Cel
'===Vérifier s'il existe des lignes avec : envoi mail
NbEnvoi = Application.CountIf(Sheets("Stock existant").Range("F:F"), "envoi mail")
NbFait = Application.CountIf(Sheets("Stock existant").Range("G:G"), "Oui")
If NbEnvoi < NbFait Then Exit Sub

sPath = ThisWorkbook.Path & "\"

...suite de ta macro...


voir si ça te change quelque chose
normalement, là, ça va nettoyer avant de refaire le calcul..
à tester
 

Mister alex

XLDnaute Nouveau
Re : Macro excel permettant d'effacer le contenu d'une cellule

Bonjour Francedemo,
J'ai ressayé ton code en espérant que par miracle la macro marche, malheuresement ca ne fonctionne toujours pas.
As-tu eu une idée depuis hier?
Merci d'avance pour ton aide.
 

Discussions similaires

Réponses
26
Affichages
483

Statistiques des forums

Discussions
312 485
Messages
2 088 814
Membres
103 971
dernier inscrit
abdazee