Modification dans un code VBA
Bonjour,
quelqu'un pourra m'aider à modifier le code VBA de mon fichier excel. Mot de passe : "Siva"
Ma feuille de calcul « Acceuil » est protégée. Mais comment fait-on pour ne pas supprimer les 5 boutons (contrôle de formulaire) : [Delete Database, Copy Sales, Delete Sales, Copy Stock Transfer et Delete Stock Transfer].
L’exécution de la macro « Delete Sales » dans la feuille « Acceuil » supprime les données de la cellule A2 au IV65536 dans la feuille « 7S-Sales ».
Modification dans le code à apporter dans « Delete Sales » :
Je souhaite supprimer carrément de la ligne de 2 à la ligne 65 536 et non supprimer les données dans les cellules.
Puis position de curseur en A2.
L’exécution de la macro « Delete Stock Transfer » dans la feuille « Acceuil » supprime les données de la cellule A2 au IV65536 dans la feuille « 7S-Stock Transfer ».
Modification dans le code à apporter dans « Delete Stock Transfer » :
Je souhaite supprimer carrément de la ligne de 2 à 65 536 et non supprimer les données dans les cellules.
Puis position de curseur en A2.
Merci d'avance
Bonjour,
Pour ton premier point : la protection des boutons ... déprotège la feuille, clique à nouveau sur Protection et descends tout au bas de la liste ... tu y trouveras ton bonheur dans l'option : Modifier les objets.
Gelinotte
Bonjour,
La suppression demandée, pour la première feuille, c'est ce que fait déjà la macro !
Pour la 2e feuille, remplacer ClearContents par Clear. Le résultats sera identique à une suppression (et plus économique !)
(NB- L'utilisation de Clear dans la 1re feuille exigerait que la colonne E soit exclue de la plage à traiter [comme c'est le cas dans la 2e feuille] sinon le résultat serait une décoloration de cette colonne sur la partie traitée...)
NB- Il reste des Select et autres Activate à éliminer... !
Cordialement.
Bjr
Pour la réponse de Gelinotte : Merci beaucoup
Pour la réponse de MFerrand : Tu as écrit NB- Il reste des Select et autres Activate à éliminer... ! Je n'ai pas très bien compris. S'il y a des codes inutiles, pourras-tu apporter ces modificatifs directement sur le code ?
En faite ce je voudrais c'est de supprimer uniquement les lignes non vides à partir de la ligne 2 dans la feuille "7S-Stock Transfer"
cdl
siva
bjr MFerrand
autant pour moi, petite erreur sur précédent message
ce que je voudrais c'est :
Tu as écrit NB- Il reste des Select et autres Activate à éliminer... ! Je n'ai pas très bien compris. S'il y a des codes inutiles, pourras-tu apporter ces modificatifs directement sur le code ?
En faite ce je voudrais c'est de supprimer uniquement les données des cellules non vides à partir de la ligne 2 dans la feuille "7S-Stock Transfer"
cdl
siva
Bonjour,
L'utilisateur, pour identifier les objets sur lesquels agir n'a d'autre moyen que de mettre le doigt (le curseur de la souris...) dessus, VBA peut les identifier plus efficacement autrement.
Sélectionner ou activer est en VBA une action comme une autre. Elle est pleinement justifiée dès lors qu'il s'agit de mettre sous les yeux de l'utilisateur tel ou tel objet ou le résultat d'une action. Si ce n'est pas l'objectif de l'action en cours, toute commande Select ou Activate intercalée n'a pas d'autre effet que de ralentir l'exécution du code...
Or le code enregistré est truffé de Select tout simplement parce que l'enregistreur enregistre les mouvements de l'utilisateur pour lequel c'est le seul mode d'action. C'est l'un des défauts majeurs (mais non le seul hélas !) de tout code enregistré, qui nécessite pour le rendre efficace de le réécrire...
Ce que j'indiquais marginalement au vu de tes procédures.
Pour ce qui est de la question, j'ai bien compris que tu veux éliminer les données de tes deux feuilles à l'exception de la ligne d'en-tête, en insistant sur la suppression de lignes...
Les données étant dans des cellules, en supprimant des lignes, tu supprimes le support et les données avec. Les lignes supprimées sont remplacées par d'autres dont le format est le format par défaut des classeurs.
Tu peux aussi supprimer les données sans le support : 2 commandes à cet égard ont des effets différents. ClearContents supprime le contenu mais conserve les formats et la mise en forme. Clear supprime tout, ce qui aboutit au même résultat que la suppression de lignes pour ce qui concerne les données, sauf pour ta colonne de séparation, colorée sur l'ensemble de la feuile : la suppression de lignes, en faisant remonter les lignes qui suivent la conserve, alors que Clear en conservant les lignes mais supprimant données et mise en forme la décolore.
L'examen des 2 procédures qui opèrent sur chacune des feuilles montrent que sur la première la procédure supprime les lignes, ce qui correspond donc à ton souhait, il n'y a donc pas à y toucher.
La seconde procède par effacement (avec ClearContents), mais sans toucher à la colonne intermédiaire, donc en mettant Clear (à la place de ClearContents) tu obtiendras le même résultat sur cette feuille que la suppression de lignes !
Cordialement.
Bjr
Merci pour ta réponse, j'ai compris la différence entre Clear et ClearContents.
Quel sera le code si je veux sélectionner les cellules non vides à partir de la ligne 2 puis supprimer. Pouvez-vous corriger le code
Sub DeleteStockTransfer()
rep = MsgBox("Are you sure you want to delete the data on 7S-Stock Transfer ?", 20)
If rep = 7 Then
Exit Sub
End If
Set fst = Sheets("7S-Stock Transfer")
fst.Unprotect "Siva"
Selection.EntireRow.Delete
Set plage = Union(fst.Range("A1").CurrentRegion.Offset(1, 0), fst.Range("F1").CurrentRegion.Offset(1, 0))
plage.Interior.Color = xlNone
plage.Clear
fst.Activate
Range("A2").Select
fst.Cells.Locked = True
fst.Protect "Siva"
End Sub Je n'ai toujours pas compris si cette parti de code a une influence dans l'exécution
If rep = 7 Then
Exit Sub
End Ifque veut dire 7 et le 20 qui se trouve à la fin de
rep = MsgBox("Are you sure you want to delete the data on 7S-Stock Transfer ?", 20)pouvez-vous m'aider
Cdl
Siva
bjr gmb
tu peut m'aider ?
Cdl
Siva
Utiliser les constantes VBA pour l'écriture du code le rend plus immédiatement lisible :
rep = MsgBox("Are you sure you want to delete the data on 7S-Stock Transfer ?", vbCritical + vbYesNo)
If rep = vbNo Then
Exit Sub
End IfTu vois que le MsgBox va s'ouvrir avec une signalisation "erreur critique" et deux boutons : 'Oui' et 'Non'.
Et si tu réponds 'Non', la procédure est abandonnée.
Comme je l'ai déjà dit, dans cette procédure Clear a le même résultat que la suppression de lignes.
Tu peux même supprimer la ligne qui précède : plage.Interior.Color = xlNone, Clear y pourvoiera aussi !
Cordialement.
Bjr
Merci pour ta réponse
Cdl