Alternance entre deux cellules. Comment faire ? RÉSOLU

GUGUSSE2

XLDnaute Occasionnel
Bonjour,

Je veux pouvoir "entrer" dans un tableur, soit un angle de rotation "A" (quelconque), soit un nombre de division ("Nb"), ce qui me donnera comme angle "360/Nb ".
Je veux que cela se passe ainsi :
- que le tableur "travaille" avec l'angle donné, soit par l'entrée "A" soit par le calcul "360/Nb".
- Que lorsque l'on entre une valeur dans l'une des deux cases (soit "A" soit "Nb"), la valeur présente dans l'autre case soit effacée.

Mon problème semble se résumer à "travailler" avec la dernière "entrée" et effacer la précédente
(ou effacer tout et "travailler" avec l'entrée présente) !
Mais ça, je ne sais pas faire.

Merci de votre aide.
GUGUSSE2
 
Dernière édition:

GUGUSSE2

XLDnaute Occasionnel
Bonsoir,

Je pensais sincèrement que l'explication était suffisante.
Dans ta réponse :
<Faute de fichier exemple, en A1 l'angle, en B1, le NB et en C1 : =SI(B2="";A2;360/B2).>
Il doit y avoir soit une erreur d'adressage pour le nombre et l'angle, soit une erreur dans la formule.
Mais peu importe, car si j'ai la case "nombre" remplie et que je veuilles entrer un angle, le calcul se fera sur la valeur précédente puisque la case "nombre" n'aura pas été effacée !

Comme on dit, affaire à suivre.

Cordialement,
GUGUSSE2
 

Victor21

XLDnaute Barbatruc
Re, GUGUSSE2

Vous aurez certainement corrigé ma proposition :
EN A1 le titre Angle, en B1 le titre NB, et dessous les valeurs.
Et si vous voulez que l'entrée de l'angle efface celle de NB et vice versa, il va falloir vous mettre au VBA, quoi que...
Joignez un fichier avec quelques données significatives (plage des angles 0 à 360 ? et plage des NB) j'aurais peut-être une proposition.
 

GUGUSSE2

XLDnaute Occasionnel
Bonsoir,

Je n'avais pas pensé à cette présentation (je "travaille" plutôt par lignes : demande : valeur, puis ligne suivante, demande : valeur).
L'essentiel est que l'on se soit compris et expliqué.
Pour ce qui est des explications, les voici :
Je me suis fait un "diviseur" sur la broche de mon tour à partir d'un pignon de 40 dents (qui existait) solidaire de la broche et d'un autre pignon de 45 dents, libre en rotation sur la broche.
Je peux indexer le pignon de 40 dents/pignon de 45 dents et je peux indexer le pignon de 45 dents/bâti.
En tournant le pignon de 40 dents d'une dent / pignon de 45 dents dans un sens et en tournant le pignon de 45 dents d'une dents / bâti dans l'autre sens, j'aurai tourné la broche de 9-8 = 1° !
Le croquis figure sur le fichier joint.

Pour ce qui est du VBA, j'en ai déjà fait, avec l'aide de ce forum d'ailleurs, mais je ne connais AUCUNE instruction (surtout pour écrire et/ou effacer le contenu de cases !
L'angle de rotation de la broche peut varier de 0 à 360° et le nombre de division peut-être quelconque (Nb<360) si "360/Nb" est entier (il faudra vérifier la validité de la donnée, chose à laquelle je n'ai pas pensé !) !

J'espère avoir répondu à tes attentes,
cordialement,
GUGUSSE2
 

Pièces jointes

  • diviseur.xlsx
    112.9 KB · Affichages: 43

eriiic

XLDnaute Barbatruc
Bonjour,

faisable en vba mais si ton angle est toujours >= 1° tu peux faire autrement.
Dans une cellule unique, les ° tu les saisis direct, les divisions sous la forme 1/nb
Tu peux mettre un format fraction à 2 ou 3 chiffres pour faciliter la lecture.
Si le nombre est <1 c'est une division à multiplier par 360, sinon ce sont des °
eric

Edit : voir fichier plus bas
 
Dernière édition:

GUGUSSE2

XLDnaute Occasionnel
Bonjour,
La cellule unique est évidement une solution (à laquelle je n'avais pas pensé) et je l'utiliserai à défaut d'une solution qui me permettrait d'entrer le nombre de division à réaliser plutôt que l'angle qui en résulte. Je trouve cela plus "intuitif".

Merci pour cette idée simple.
Cordialement,
GUGUSSE2
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Sous réserve d'avoir compris :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Rows.Count > 1 Or Target.Columns.Count > 1 Then Exit Sub
If Intersect([B3:B4], Target) Is Nothing Then Exit Sub
Application.EnableEvents = False
Target.Offset(7 - Target.Row * 2).Value = 360 / Target.Value
Application.EnableEvents = True
End Sub
 

GUGUSSE2

XLDnaute Occasionnel
Bonjour,

Je ne suis pas suffisamment connaisseur pour juger de la pertinence de la réponse de Danreb.
Ce que je peux juste dire, c'est qu'il ne faut un minimum d'explication pour que je comprenne ce que le programme VBA fait, où et quand !
(Cela m'évitera de perdre du temps à chercher la signification de chaque instruction, car la majeure partie d'entre-elles me sont inconnues. Et ce n'est pas à mon age que je vais me former à ce langage !).

Cordialement,
GUGUSSE2
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 206
Messages
2 086 203
Membres
103 157
dernier inscrit
youma