OVH Cloud OVH Cloud

enregistrement automatique de valeurs

2 réponses
Avatar
Christophe
je suis novice sur EXCEL et voici mon probl=E8me :=20

pour une feuille de calcule servant =E0 calculer des=20
montants de voyages, j'utilise (entre autre) les distances=20
entre un certain nombre de ports. j'ai fait en sorte qu'a=20
partir des ports selectionn=E9s la distance soit calcul=E9e=20
automatiquement en fonction des distances d=E9ja entr=E9es=20
dans la table des distances.=20
La table des distances est une feuille dont la=20
premi=E8re ligne et la premi=E8re colonne sont la liste de=20
tout les ports.=20
Etant donn=E9 qu'il y a =E0 peu de choses pr=EAs 1500=20
ports, je n'ai pas le courrage de saisir toutes les=20
distances d'un coup donc, j'ai pr=E9vu une case qui me=20
permet d'entrer la distance entre chaque port de mani=E8re=20
manuelle.=20
Ce qu'il faudrait c'est que cette distance puisse=20
=EAtre automatiquement ins=E9r=E9e dans ma table des distances.=20
J'esp=E8re avoir =E9t=E9 sufisement clair. Au pire,=20
n'h=E9sitez pas a me poser des questions pour plus de=20
d=E9tails.=20

Merci d'avance =E0 tous.


NB: je n'ai malheureusement pas la possibilit=E9 d'utiliser=20
une base de donn=E9e ni m=EAme ACCESS sinon, le probl=E8me=20
aurait d=E9ja =E9t=E9 r=E9solu.=20

2 réponses

Avatar
Jean-François Aubert
Salut Christophe,

une solution parmis d'autre.

une cellule nommée : dep (ou tu rentreras le port de départ)
une cellule nommée : arr (ou tu rentreras le port d'arrivée)
une cellule nommée : dist (ou tu rentreras la distance)
liste de ports horizontale en B1:IV1 (à adapter dans le code)
liste de ports verticale en A2:A65536 (à adapter dans le code)

et dans le code de la feuille:

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect([dist], Target) Is Nothing Then
On Error Resume Next
Set rngH = Range("B1:IV1") ' liste horizontale
Set rngV = Range("A2:A65536") ' liste verticale
rep1 = Application.Match([dep], rngH, 0)
If Not IsNumeric(rep1) Then myerreur = 1: GoTo erreur
col = rngH.Item(rep1).Column
rep2 = Application.Match([arr], rngV, 0)
If Not IsNumeric(rep2) Then myerreur = 2: GoTo erreur
li = rngV.Item(rep2).Row
Application.EnableEvents = False
Cells(li, col) = [dist].Value
Application.EnableEvents = True
End If
Set rngH = Nothing: Set rngV = Nothing
Exit Sub
erreur:
Err = 0: MsgBox Range(Choose(myerreur, "dep", "arr")) & vbLf & _
"est introuvable dans" & vbLf & _
Choose(myerreur, "la liste horizontale", "la liste verticale"), vbCritical, "Erreur"
End Sub


Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect([dep], Target) Is Nothing Or Not Intersect([arr], Target) Is Nothing Then
Application.EnableEvents = False
[dist].Clear
Application.EnableEvents = True
End If
End Sub


--
Amicalement

Jean-François Aubert
{Vaudois de la Côte Lémanique}


"Christophe" a écrit dans le message de
news:01f101c46d6e$d22644d0$
je suis novice sur EXCEL et voici mon problème :

pour une feuille de calcule servant à calculer des
montants de voyages, j'utilise (entre autre) les distances
entre un certain nombre de ports. j'ai fait en sorte qu'a
partir des ports selectionnés la distance soit calculée
automatiquement en fonction des distances déja entrées
dans la table des distances.
La table des distances est une feuille dont la
première ligne et la première colonne sont la liste de
tout les ports.
Etant donné qu'il y a à peu de choses prês 1500
ports, je n'ai pas le courrage de saisir toutes les
distances d'un coup donc, j'ai prévu une case qui me
permet d'entrer la distance entre chaque port de manière
manuelle.
Ce qu'il faudrait c'est que cette distance puisse
être automatiquement insérée dans ma table des distances.
J'espère avoir été sufisement clair. Au pire,
n'hésitez pas a me poser des questions pour plus de
détails.

Merci d'avance à tous.


NB: je n'ai malheureusement pas la possibilité d'utiliser
une base de donnée ni même ACCESS sinon, le problème
aurait déja été résolu.
Avatar
Merci beaucoup de votre aide .

Christophe
-----Message d'origine-----
Salut Christophe,

une solution parmis d'autre.

une cellule nommée : dep (ou tu rentreras le port de
départ)

une cellule nommée : arr (ou tu rentreras le port
d'arrivée)

une cellule nommée : dist (ou tu rentreras la distance)
liste de ports horizontale en B1:IV1 (à adapter dans le
code)

liste de ports verticale en A2:A65536 (à adapter dans le
code)


et dans le code de la feuille:

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect([dist], Target) Is Nothing Then
On Error Resume Next
Set rngH = Range("B1:IV1") ' liste horizontale
Set rngV = Range("A2:A65536") ' liste verticale
rep1 = Application.Match([dep], rngH, 0)
If Not IsNumeric(rep1) Then myerreur = 1: GoTo
erreur

col = rngH.Item(rep1).Column
rep2 = Application.Match([arr], rngV, 0)
If Not IsNumeric(rep2) Then myerreur = 2: GoTo
erreur

li = rngV.Item(rep2).Row
Application.EnableEvents = False
Cells(li, col) = [dist].Value
Application.EnableEvents = True
End If
Set rngH = Nothing: Set rngV = Nothing
Exit Sub
erreur:
Err = 0: MsgBox Range(Choose(myerreur, "dep", "arr"))
& vbLf & _

"est introuvable dans" & vbLf & _
Choose(myerreur, "la liste horizontale", "la
liste verticale"), vbCritical, "Erreur"

End Sub


Private Sub Worksheet_SelectionChange(ByVal Target As
Range)

If Not Intersect([dep], Target) Is Nothing Or Not
Intersect([arr], Target) Is Nothing Then

Application.EnableEvents = False
[dist].Clear
Application.EnableEvents = True
End If
End Sub


--
Amicalement

Jean-François Aubert
{Vaudois de la Côte Lémanique}


"Christophe" a
écrit dans le message de

news:01f101c46d6e$d22644d0$
je suis novice sur EXCEL et voici mon problème :

pour une feuille de calcule servant à calculer des
montants de voyages, j'utilise (entre autre) les distances
entre un certain nombre de ports. j'ai fait en sorte qu'a
partir des ports selectionnés la distance soit calculée
automatiquement en fonction des distances déja entrées
dans la table des distances.
La table des distances est une feuille dont la
première ligne et la première colonne sont la liste de
tout les ports.
Etant donné qu'il y a à peu de choses prês 1500
ports, je n'ai pas le courrage de saisir toutes les
distances d'un coup donc, j'ai prévu une case qui me
permet d'entrer la distance entre chaque port de manière
manuelle.
Ce qu'il faudrait c'est que cette distance puisse
être automatiquement insérée dans ma table des distances.
J'espère avoir été sufisement clair. Au pire,
n'hésitez pas a me poser des questions pour plus de
détails.

Merci d'avance à tous.


NB: je n'ai malheureusement pas la possibilité d'utiliser
une base de donnée ni même ACCESS sinon, le problème
aurait déja été résolu.


.