charluche
Messages postés57Date d'inscriptionmardi 14 août 2007StatutMembreDernière intervention10 novembre 2009
-
2 sept. 2007 à 15:48
JM247L
Messages postés443Date d'inscriptionmardi 27 mars 2007StatutMembreDernière intervention 1 mars 2011
-
17 sept. 2007 à 11:41
Bonjour a tous,
je suis actuellement face a un probleme avec vba et pour ne rien vous cacher je n'y connais rien a ce langage. En fait ma macro dessine dans un premier temps une forme puis inscrit dans des cellules des inforations relatives a cette forme. Dans ce sens la ca marche tres bien, en revanche, si je supprime la forme precedement dessinee, les informations relatives restent. Je souhaiterai que mes infrmations et que mes informations relatives soient remontees d une ligne. Exemple, si je supprime la 11eme forme, il faudrait que d12 et e12 soient supprimees et que les informations relatives a la 12eme forme soient maintenant dans la cellule d12 et d12.
J espere etre assez claire dans mon explication...
Dans tous les cas je vous remercie pour votre interet.
Charluche.
PS voici mon code:
Sub colis()
Static Ligne As Long
' Ajout de titres pour coordonnées
Range("D1:E1") = Array("Hauteur", "Poids")
' Cellule de reference
Range("C1").Select
' Initialisation des compteurs Ligne (Ligne + 1): Colonne 1
' Informations sur le conteneur
Longueur = InputBox("Longueur du conteneur en metre, si vous ne connaissez pas la longueur exacte, tapez 1 et ajustez manuellement avec les poignees.", "Longueur du conteneur", "1")
Largeur = InputBox("Largeur du conteneur en metre, si vous ne connaissez pas la longueur exacte, tapez 1 et ajustez manuellement avec les poignees.", "Largeur du conteneur", "1")
Hauteur = InputBox("Hauteur du conteneur en metre, cette hauteur sera automatiquement ponderee du coefficient 2/3 pour le calcul du KG.", "Hauteur du conteneur")
Poids = InputBox("Poids du conteneur en tonnes.", "Poids du conteneur")
ActiveCell.Offset(Ligne, Colonne) = Hauteur
ActiveCell.Offset(Ligne, Colonne + 1) = Poids
' Dessin de la forme
Set myDocument = Worksheets(1)
With myDocument.Shapes
.AddShape msoShapeRectangle, 5, 5, Longueur, Largeur
End With
Set myDocument = Nothing
End Sub
A voir également:
Excel supprimer des cellules quand je supprime une forme qui leur est associee
JM247L
Messages postés443Date d'inscriptionmardi 27 mars 2007StatutMembreDernière intervention 1 mars 20112 14 sept. 2007 à 17:37
Bonsoir,
Remplace ton code dans Thisworkbook - Pourquoi l'avoir mis à ce niveau et ne pas avoir inséré un module ? - par celui ci
En rouge les lignes que j'ai ajouté. Le mot de passe doit être changé - si nécessaire - dans la feuille d'abord pour que le code fonctionne
Avant de lancer ce code :
- Sélectionner toute la feuille puis dévérouiller toutes les cellules
- Sélectionner toutes les cellules à Vérouiller et dans Format/Cellule/Protection faire que cel soit
- Sélectionner tous les objets qui doivent être vérouiller et vérifier dans Format/.../Protection que cela soit
Moi j'ai testé, cela fonctionne comme une horloge de chez Lip (d'avant guerre)
Concernant la fonction attribué au bouton RAZ je ne suis pas persuadé du résultat dans la mesure ou ClearContent n'efface que le contenu mais conserve le nom de la cellule ... c'est pourquoi j'avais codé la suppression ... Le risque c'est le télescopage des nom de boite existant lors de la création ...
Et puis c'est pas propre
Voilà ... Voilà ... Bonne fin de semaine
Sub CreationBoite()
Dim Lg, Cl, cd, ce
cd = InputBox("Longueur du conteneur en metre, si vous ne connaissez pas la longueur exacte, tapez 1 et ajustez manuellement avec les poignees.", "Longueur du conteneur", "1")
ce = InputBox("Largeur du conteneur en metre, si vous ne connaissez pas la longueur exacte, tapez 1 et ajustez manuellement avec les poignees.", "Largeur du conteneur", "1")
ActiveSheet.Unprotect ("password")
ActiveSheet.Shapes.AddShape(msoShapeRectangle, 20, 20, cd * (0.631) * 28.3464, ce * (0.639) * 28.3464).Select
Selection.Locked = False
Range("NombreDeBoites") = Range("NombreDeBoites") + 1
Selection.Name = "Boite" & Range("NombreDeBoites")
Lg = Range("Hauteur").End(xlDown).Row + 1
If Lg > 65536 Then Lg = 2
Cl = Range("Hauteur").Column
Cells(Lg, Cl) = InputBox("Hauteur du conteneur en metre, cette hauteur sera automatiquement ponderee du coefficient 2/3 pour le calcul du KG.", "Hauteur du conteneur")
ActiveWorkbook.Names.Add Name:="Boite" & Range("NombreDeBoites") & "_Hauteur", RefersToR1C1:=Cells(Lg, Cl)
Cl = Range("Poids").Column
Cells(Lg, Cl) = InputBox("Poids du conteneur en tonnes.", "Poids du conteneur")
ActiveWorkbook.Names.Add Name:="Boite" & Range("NombreDeBoites") & "_Poids", RefersToR1C1:=Cells(Lg, Cl)
ActiveSheet.Protect "password", DrawingObjects:=True, Contents:=True, Scenarios:=True
ActiveSheet.EnableSelection = xlUnlockedCells
End Sub
Cliquer "Réponse Acceptée" Quand La Réponse Est OK
JML. Partageons notre savoir et nos acquis
charluche
Messages postés57Date d'inscriptionmardi 14 août 2007StatutMembreDernière intervention10 novembre 2009 14 sept. 2007 à 18:12
Merci encore JML,
pour ce qui est de rentrer le code dans le thisworkbook, c est par pure incompetence. en revanche la touche RAZ elle sert au cas ou je supprime une forme par reflexe avec la touche delete, ca permet de ne pas devoir oter la protection etc. Je suis d accord que ce n'est pas tres joli mais bon... Sinon, ca fonctionne bien si ce n est que si je supprime la forme avec le bouton supprime, les valeur ne sont plus effacees automatiquement. Je pense que tu as du faire ca pour donner une utilite a mon bouton raz (il n est la qu en secours!). Enfin je vais regarder de mon cote si je ne peux pas bidouiller de mon cote sans saccager ton travail.
Encore merci et bon W.E.
Charluche.
charluche
Messages postés57Date d'inscriptionmardi 14 août 2007StatutMembreDernière intervention10 novembre 2009 17 sept. 2007 à 11:37
Bonjour JML,
voila, je pense que tout fonctionne maintenant impecable, merci beaucoup pour ton aide. La derniere modif supprime tout comme il faut, encore felicitations et encore merci.
Charluche.