Supprimer des données avec une macro

LAC736

XLDnaute Nouveau
Bonjour,
je suis nouveau sur ce forum, cela fait plus des années que je n'ai pas eu à me servir d'Excel et j'aurais besoin d'aide pour une macro VBA.
J'essaie de mettre en place un tableau de suivi de la charge par machine.
J'ai donc une colonne par machine ou j'ai rentré la charge en heures, en haut je fais la somme des charges pour un mois donné pour chaque machine.
Le problème c'est que dès que la pièce à été fabriqué, il faudrait que j'ignore ou j'efface les heures pour que ça ne le prenne pas en compte dans la somme de la charge machine. (je ne veux pas effacer les lignes pour avoir une trace du passé) (je joint le fichier pour que vous puissiez en avoir un aperçu)
J'ai donc pensé à un bouton de reset et une colonne "fabriqué", je voudrais effacer les cases de la T à AI pour les lignes dont le contenu de la case AJ (fabriqué) est "oui", seulement je ne me souvient plus du tout de la syntaxe VBA.
Merci
 

Pièces jointes

  • Cmdes modif.xls
    110 KB · Affichages: 41
  • Cmdes modif.xls
    110 KB · Affichages: 35

Modeste

XLDnaute Barbatruc
Re : Supprimer des données avec une macro

Bonjour LAC736 et bienvenue,

Tu pourrais le faire (si j'ai compris ta demande) au double-clic en colonne AJ.
Colle les lignes suivantes dans la fenêtre de code de Feuil1:
VB:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Column <> 36 Then Exit Sub
If Target = "" Then
    Application.EnableEvents = False
    Target = "fabriqué"
    Cells(Target.Row, 20).Resize(1, 16) = ""
    Application.EnableEvents = True
    Cancel = True
End If
End Sub
 

LAC736

XLDnaute Nouveau
Re : Supprimer des données avec une macro

Merci de votre réponse,
j'ai copié le code dans la fenêtre de code de la feuil1, mais je ne crois que pas que cela fasse quoique ce soit, pour le lancer il faut double cliquer sur le haut de la colonne? (chez moi ça ne fait rien)
Malheureusement je ne comprends pas assez le code, pour comprendre ce que vous avez essayé de faire et voir pourquoi ça ne fonctionne pas.

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Column <> 36 Then Exit Sub Ok donc la je vois la colonne 36 c'est la colonne AJ
If Target = "" Then
Application.EnableEvents = False
Target = "fabriqué" là je ne comprends pas, ma colonne 36 doit contenir le terme "fabriqué"?
Cells(Target.Row, 20).Resize(1, 16) = "" donc là je suppose que c'est l'action, mais je comprend pas du tout comment fonctionnent ces références...
Application.EnableEvents = True
Cancel = True
End If
End Sub
 
Dernière modification par un modérateur:

Modeste

XLDnaute Barbatruc
Re : Supprimer des données avec une macro

Re-bonjour,

L'idée serait de double-cliquer en colonne AJ, sur une cellule dont tu veux que les valeurs de T à AI soient effacées.

La mention "fabriqué" sera inscrite dans la cellule où tu auras fait le double-clic.
L'instruction "Cells(Target.Row, 20).Resize(1, 16) = "" " inscrit une chaîne de caractères vide (les "") dans une plage qui, au départ de la 20[SUP]e[/SUP] colonne sur la ligne en cours de modification (Target.Row), s'étend sur 1 seule ligne et 16 colonnes (le Resize)

Donc si tu double-cliques sur AJ6, au départ de T6, sur 20 colonnes vers la droite et une seule ligne, tes données sont effacées et la mention "fabriqué" apparaît en AJ6.

Est-ce plus clair ... et accessoirement :rolleyes: était-ce bien ce que tu voulais?
 

LAC736

XLDnaute Nouveau
Re : Supprimer des données avec une macro

D'accord, je comprend mieux
"Donc si tu double-cliques sur AJ6, au départ de T6, sur 20 colonnes vers la droite et une seule ligne, tes données sont effacées et la mention "fabriqué" apparaît en AJ6"
Vous voulez bien dire "si* la mention "fabriqué" apparait en AJ6"?
Dans ce cas c'est bien ce que je voulais faire, mais ça ne fonctionne pas, le double clic sur AJ6 me permet juste de modifier le texte.
Je rejoins le fichier avec la macro, j'ai peut être mal intégré le code.
Merci beaucoup.
 

Pièces jointes

  • Cmdes modif.xls
    116 KB · Affichages: 34
  • Cmdes modif.xls
    116 KB · Affichages: 32

Modeste

XLDnaute Barbatruc
Re : Supprimer des données avec une macro

Re²,

Vous voulez bien dire "si* la mention "fabriqué" apparait en AJ6"?
Non, non :D je voulais bien dire qu'après le double-clic sur une cellule vide en colonne AJ, le mot "fabriqué" est inscrit dans la cellule juste avant que les autres colonnes de la même ligne soient effacées (si le mot "fabriqué" figure déjà dans la cellule double-cliquée, rien ne se passe, puisqu'au début du code figure If Target="" Then ... le reste du code ne s'exécute que si la cellule en colonne AJ est vide).


Mais on peut faire autrement, si tu préfères, évidemment :)
 

LAC736

XLDnaute Nouveau
Re : Supprimer des données avec une macro

A très bien donc ça fonctionne, merci!
une dernière question juste par curiosité, vu que mon problème est résolu,
à quoi servent les lignes
Application.EnableEvents = False
Application.EnableEvents = True
Cancel = True
merci
 

Modeste

XLDnaute Barbatruc
Re : Supprimer des données avec une macro

à quoi servent les lignes
Application.EnableEvents = False
Application.EnableEvents = True

Arff, dans le cas présent ... à rien du tout ;) Bravo pour ta curiosité et honte sur moi! :eek:

Au départ, j'étais parti sur l'idée que l'inscription "manuelle" de la mention "fabriqué" en colonne AJ servirait de déclencheur. Dans ce cas, on aurait utilisé l'événement Worksheet_Change et à ce moment, pour ne pas que l'effacement des cellules des colonnes T à AI provoque la survenue de l'événement Change à l'intérieur de cette même procédure en cours d'exécution, on peut désactiver la gestion des événements. Comme je suis parti sur l'idée du double-clic, on peut supprimer ces deux lignes, qui n'ont pas lieu d'être.

Le "Cancel=True" doit rester, quant à lui. C'est un des arguments de la procédure événementielle. Comme c'est un booléen, il est initialisé à FALSE. Tant qu'il reste en cet état, la cellule reste en mode édition à la sortie de la procédure Double-Clic (le curseur "clignote" dans la cellule) dans l'attente d'une frappe ou d'une validation. Le passer à True, c'est comme si, après avoir double-cliqué et inscrit la mention, on validait la saisie.
... Tu me suis?
 

Statistiques des forums

Discussions
312 502
Messages
2 089 023
Membres
104 007
dernier inscrit
Monvieux