effacement contenu colonnes et utilisation boite dialogue

boudu

XLDnaute Occasionnel
Bonjour au forum
2 problemes que j'expose dans un meme post mais dont j'ignore si la réalisation est compliquée ou pas
1er probleme:
Je souhaite permettre aux utilisateurs d'un fichier protégé d'effacer le contenu de 2 colonnes juxtaposées en positionnant le curseur n'importe où dans la colonne de gauche concernée, si le curseur est dans la colonne de droite (la plus petite dans mon fichier test, il doit y a voir un message d'erreur indiquant que le curseur est mal positionné
2eme probleme:
Je souhaite permettre aux utilisateurs de modifier un nom dans une cellule d'une feuille protégée et pour ce faire je vais créer un bouton dans une barre d'outils qui doit lancer une boite de dialogue dans laquelle l'utilisateur ecrit le nom qui va s'inscrire sur la feuille dans la meme cellule que le nom qui figurait auparavant

J'ai remis les explications de mes souhaits dans le fichier test joint

Merci d'avance à celles et ceux qui voudront bien se pencher sur mon probleme
 

Pièces jointes

  • effacecolonne.xls
    20 KB · Affichages: 70
  • effacecolonne.xls
    20 KB · Affichages: 68
  • effacecolonne.xls
    20 KB · Affichages: 67

Hulk

XLDnaute Barbatruc
Re : effacement contenu colonnes et utilisation boite dialogue

Hello,

J'sais pas si ai bien saisis ce que tu souhaites, mais vois le fichier joint.

Cdt, Hulk.
 

Pièces jointes

  • effacecolonne.xls
    37 KB · Affichages: 64
  • effacecolonne.xls
    37 KB · Affichages: 64
  • effacecolonne.xls
    37 KB · Affichages: 63
Dernière édition:

ledzepfred

XLDnaute Impliqué
Re : effacement contenu colonnes et utilisation boite dialogue

salut l'homme vert:), boudu

le code de Hulk ne tient pas compte de la suppresion du format de la plage à effacer, ajoutes ceci dans le code de Hulk

Code:
Case vbYes
            x.ClearContents
           [COLOR="Red"] ActiveSheet.Unprotect Password:="toto"
            x.Borders(xlInsideVertical).LineStyle = xlNone
            x.Borders(xlInsideHorizontal).LineStyle = xlNone
            ActiveSheet.Protect Password:="toto"[/COLOR]
Case vbNo
et faire la même chose pour les variables y et z

Le bouton dans la barre d'outils n'est pas une bonne idée car d'un micro à un autre les barres d'outils diffèrent et pour le coup ce sera un bouton personnalisé à créer sur tous les micros sur lesquels les utilisateurs travaillent sur le fichier (pas top), le bouton dans la feuille proposé par Hulk est donc une meilleure solution

a+
 
Dernière édition:

boudu

XLDnaute Occasionnel
Re : effacement contenu colonnes et utilisation boite dialogue

Bonjour Hulk, Ledzep et tout le forum
Merci des reponses (elles sont venues dans la nuit et je suis plutôt du matin donc je n'ai pas encore testé, je le fais de ce pas..
Pour l'histoire du bouton dans la barre d'outils, je passe effectivement sur les postes des 5 personnes concernées et je mets systematiquement les macros dans un fichier hébergé sur le serveur donc pour moi c'est quand meme une meilleure solution parce que mes pages de travail sont assez encombrées et j'ai au moins 20 boutons sur ce fichier (qui en fait est un fichier de gestion de planning avec dans chacune des colonnes des plages horaires qui peuvent changer de semaine en semaine.
Je teste donc et je poste pour dire si c'est ok

bonne journée à tous
 

boudu

XLDnaute Occasionnel
Re : effacement contenu colonnes et utilisation boite dialogue

Re Hulk, Ledzep, le forum

Donc j'ai testé le fichier proposé par Hulk, ce n'est pas tout à fait comme ça que je voyais la chose. Dans la plupart des cas, on ne souhaite pas réinitialiser le contenu d'une colonne mais plutôt de temps en temps donc je prefere l'option d'un bouton dans ma fameuse barre d'outils qui permet la réinitialisation du contenu de la colonne dans laquelle se trouve le curseur et un message d'erreur si c'est une cellule de la colonne à coté qui est selectionnée.
Donc, a priori ça pourrait etre ok mais il y a plusieurs modifs par colonne à faire dans le vrai fichier et la question va etre posée à chaque fois, pas cool!!
Avec le complement de Ledzep, ça correspond à l'ensemble de ce que doit faire la macro

Je regarde si je peux adapter mais je crois que je ne refuserai pas une petite aide supplementaire si cela vous est possible.
Donc je resume: l'utilisateur selectionne B16 ou une autre cellule dans la plage B9 à B43 (il ne se passe rien!), il veut reinitialiser les colonnes B et C (9 à 43) et remettre le formatage avec cadre gras qui entoure B9 à B43 et idem pour C9 à C43. Si le curseur est dans la plage C9 à C43 il doit y avoir un message d'erreur et rien ne doit se passer (message genre: "Impossible de reinitialiser cette colonne". Si le curseur est en B16, on utilise un bouton de la barre d'outils qui lance la macro
Pour l'inputbox c'est au poil..

Voilou, ce serait trop simple si c'etait impecc du premier coup!!
Merci à vous et bonne journée
 

vbacrumble

XLDnaute Accro
Re : effacement contenu colonnes et utilisation boite dialogue

Bonjour à tous


Une autre proposition (perfectible)

Code:
Sub test()
If (MsgBox(IIf(ActiveCell.Column Mod 2 = 0, "Selection valide. Le contenu de la colonne va être effacé", "Mauvaise colonne. Cliquer sur NON"), vbYesNo, "Avertissement") = vbYes) Then ActiveCell.EntireColumn.ClearContents
End Sub
 

Hulk

XLDnaute Barbatruc
Re : effacement contenu colonnes et utilisation boite dialogue

Hello le Forum, Boudu,

Juste pour une modif sur la macro "Nom".

Comme ceci
Code:
Sub Nom()

ActiveSheet.Unprotect Password:="toto"
x = InputBox("Veuillez saisir un nouveau nom !", "Noms")

If x = "" Then
    Select Case MsgBox("Vous devez saisir un nom !", vbOKOnly, "Noms")
    Case vbOK
     ActiveSheet.Protect DrawingObjects:=True, contents:=True, Scenarios:=True, Password:="toto"
    Exit Sub
    End Select
End If

Range("D2") = x
ActiveSheet.Protect DrawingObjects:=True, contents:=True, Scenarios:=True, Password:="toto"

End Sub
Par contre pour ça
Donc je resume: l'utilisateur selectionne B16 ou une autre cellule dans la plage B9 à B43 (il ne se passe rien!), il veut reinitialiser les colonnes B et C (9 à 43) et remettre le formatage avec cadre gras qui entoure B9 à B43 et idem pour C9 à C43. Si le curseur est dans la plage C9 à C43 il doit y avoir un message d'erreur et rien ne doit se passer (message genre: "Impossible de reinitialiser cette colonne". Si le curseur est en B16, on utilise un bouton de la barre d'outils qui lance la macro
Je ne sais pas si c'est moi, mais j'avoue ne pas comprendre pas ce que tu veux dire.

Si tu pouvais être un poil plus clair.

Dans l'attente.. Bon week à tous !

Cdt, Hulk.
 

boudu

XLDnaute Occasionnel
Re : effacement contenu colonnes et utilisation boite dialogue

Re Hulk, led zep , vba crumble, le forum
en fait à vouloir trop detailler j'embrouille

l'idée c'est qu'on reinitialise 2 colonnes cote a cote mais il faut que le curseur soit dans celle de gauche, s'il est dans celle de droite il y a message d'erreur (j'ai pas testé encore mais le solution de vbacrumble semble ok)
voila, la seule chaose qui n'allait pas dans ton premier code c'est que le formatage apres la macro doit juse etre encadrement en gras de la colonne B et C du haut en bas

voila sinon ça commence à coller à peu pres

merci et bonne journée
 

Hulk

XLDnaute Barbatruc
Re : effacement contenu colonnes et utilisation boite dialogue

Hello,

Okey compagnon, heureusement que vbacrumble s'est joint à nous, j'y serais pas arrivé :eek: ... ouf tu m'sauves la mise vbacrumble :D

Bonne aprèm à vous, Hulk.
 

boudu

XLDnaute Occasionnel
Re : effacement contenu colonnes et utilisation boite dialogue

Bonjour dominical à tous
desolé d'avoir laché l'affaire hier mais je suis en repos et j'avais d'autres trucs à faire
etant donné que c'est un fichier professionnel et que j'ai evidemment oublié d'en faire une copie, je ne peux pas verifier le bon fonctionnement definitif mais je regarde ça demain matin et je vous dis

sur le fichier test ça le fait mais il peut toujours y avoir un petit truc en surprise!!
à suivre donc et
bon dimanche à tous
 

boudu

XLDnaute Occasionnel
Re : effacement contenu colonnes et utilisation boite dialogue

Bonjour Hulk, ledzep, vba crumble et le forum
Je teste en reel et evidemment c'est pas simple!!

Comme je le craignais ce n'est pas ideal que le message apparaisse à chaque fois qu'on clique dans la colonne dans laquelle on doit faire des modifs (B9 à B43 par exemple) car souvent on n'a pas besoin de reinitialiser l'ensemble de la colonne. Je voudrais, mais je n'arrive pas à adapter le code, que si on souhaite réinitialiser et seulement à ce moment on utilise un bouton qui efface la colonne dans laquelle se trouvele curseur et celle d'à coté et refasse le formatage colonne B entourée en gras et pareil colonne C (le complement donné par ledzep entourait les 2 colonnes mais ne remettait pas le cloisonnement du milieu.
il faudrait que lorsqu'on active le bouton il y ait un message d'erreur si le curseur est en colonne C ou E ou G
voila, pour le nom ça marche impecc
Merci à nouveau et bonne journée
 

boudu

XLDnaute Occasionnel
Re : effacement contenu colonnes et utilisation boite dialogue

Re bonsoir à tous
je me débats avec les bouts de code mais je ne m'en sors pas
il faudrait un truc du genre:
si le curseur est dans la plage b9 à b43
alors effacer le contenu et le formatage de b9 à c43
puis remettre les bordures en gras autour de b9 à b43 et idem c9 à c43
et si le curseur est dans la plage c9 à c43
alors message d'erreur "la reinitialisation doit se faire à partir de la colonne B"

voila, je sais le dire mais je sais pas le faire!!

Merci d'avance

Bonne soirée
 

Discussions similaires

Statistiques des forums

Discussions
312 216
Messages
2 086 342
Membres
103 192
dernier inscrit
Corpdacier