OVH Cloud OVH Cloud

saisie automatique en VBA

5 réponses
Avatar
Quetzalcoatl
Bonsoir,

J'utilise un fichier EXCEL dans lequel je saisis régulièrement des données.
Chaque nouvelle entrée correspond à une nouvelle ligne à saisir.
Chaque ligne comporte plusieurs champs (colonnes) à saisir.
Dans certains cas, la connaissance de l'un des champs permettrait de renseigner
automatiquement la plupart des autres champs de la ligne considérée. C'est
pourquoi je voudrais créer une macro VBA qui, lorsqu'elle reconnaîtrait telle ou
telle chaîne de caractères saisie dans l'un des champs, renseignerait
automatiquement certains autres champs.
Pour plus de souplesse, j'aimerais paramétrer cette macro par un tableau qui
serait une sorte d'image de la structure de mon fichier, comportant en colonne
les différents champs et en ligne les quelques différents "motifs" répétitifs.

Toute aide ou conseil seraient bienvenus, car je ne sais pas trop comment m'y
prendre !

Merci d'avance.
--
Avete amici

5 réponses

Avatar
e.lecrenier
Bonsoir
Loin de moi l'idée de me prendre pour un spécialiste (sauf en conneries).
Voici comment je gèrerais le problème s'il s'avérait qu'il s'intrusionne
chez moi.
Si on veut une saisie automatique, il faut par définition, que le contenu de
la saisie existe déjà. Un peu comme lorsque l'on commence à copier une cel
et qu'Excel propose ce qu'il vient d'enregistrer dans les cellules
précédentes.
Partant de cela, je créerais une liste de noms ou valeurs , liste que
j'affecterais aux cellules de la colonne A, par exemple.
Ensuite, via une macro je lui ferais faire (c'est mon esclave) un " si cel
A1 = "machin", alors B1= "truc", C1= "retruc" et D1= "reretruc". Tout cela
suivi du next de la boucle pour visiter toutes les cel de la colA.
Voilà ce que je peux proposer, mais les conseilleurs ne sont pas les
payeurs.
Partant de cela, et vu que certains sont très pingres, j'en déduis que
d'autres trouveront une solution plus intelligente et plus efficace que la
mienne.
--
Bonne chance et bonne fin de journée.
Jacquouille qui lit http://www.excelabo.net

"Quetzalcoatl" a écrit dans le message de
news:bo0skn$ik0$
Bonsoir,

J'utilise un fichier EXCEL dans lequel je saisis régulièrement des
données.

Chaque nouvelle entrée correspond à une nouvelle ligne à saisir.
Chaque ligne comporte plusieurs champs (colonnes) à saisir.
Dans certains cas, la connaissance de l'un des champs permettrait de
renseigner

automatiquement la plupart des autres champs de la ligne considérée. C'est
pourquoi je voudrais créer une macro VBA qui, lorsqu'elle reconnaîtrait
telle ou

telle chaîne de caractères saisie dans l'un des champs, renseignerait
automatiquement certains autres champs.
Pour plus de souplesse, j'aimerais paramétrer cette macro par un tableau
qui

serait une sorte d'image de la structure de mon fichier, comportant en
colonne

les différents champs et en ligne les quelques différents "motifs"
répétitifs.


Toute aide ou conseil seraient bienvenus, car je ne sais pas trop comment
m'y

prendre !

Merci d'avance.
--
Avete amici




Avatar
Quetzalcoatl
Bonsoir
Loin de moi l'idée de me prendre pour un spécialiste (sauf en conneries).
Voici comment je gèrerais le problème s'il s'avérait qu'il s'intrusionne
chez moi.
Si on veut une saisie automatique, il faut par définition, que le contenu de
la saisie existe déjà. Un peu comme lorsque l'on commence à copier une cel
et qu'Excel propose ce qu'il vient d'enregistrer dans les cellules
précédentes.
Partant de cela, je créerais une liste de noms ou valeurs , liste que
j'affecterais aux cellules de la colonne A, par exemple.
Ensuite, via une macro je lui ferais faire (c'est mon esclave) un " si cel
A1 = "machin", alors B1= "truc", C1= "retruc" et D1= "reretruc". Tout cela
suivi du next de la boucle pour visiter toutes les cel de la colA.
Voilà ce que je peux proposer, mais les conseilleurs ne sont pas les
payeurs.
Partant de cela, et vu que certains sont très pingres, j'en déduis que
d'autres trouveront une solution plus intelligente et plus efficace que la
mienne.



Merci pour ces indications.
Comment faire pour que la saisie automatique fonctionne "en permanence" ou "en
temps réel", c'est-à-dire sans avoir à lancer la macro après la saisie d'une
ligne (ou d'un groupe de lignes) ?

--
Wedersah

Avatar
Jean-François Aubert
Salut Quetzalcoatl

- J'ai supposé le tableau "d'image de la structure du fichier"
en A1:Dx de la Feuil3

- Les données saisies en colonne A à D d'une autre feuille

A coller dans le module de la feuille où tu saisis le données.
'***************************************************
Private Sub Worksheet_Change(ByVal target As Range)
If target.Cells.Count > 1 Then Exit Sub

Dim Li
Li = target.Row
Select Case target.Column
Case 1
macro1 (Li)
Case 2
macro2 (Li)
Case 3
macro3 (Li)
End Select
End Sub

Sub macro1(Li)
Dim Rng As Range, r As Variant
Set Rng = Sheets("Feuil3").Range("A1:A1000")
r = Application.Match(Cells(Li, 1).Value, Rng, 0)
If IsError(r) Then Exit Sub
Sheets("Feuil3").Range("B" & r & ":D" & r).Copy Destination:=Range("B" & Li & ":D" & Li)
Set Rng = Nothing
End Sub

Sub macro2(Li)
Dim Rng As Range, r As Variant
Set Rng = Sheets("Feuil3").Range("B1:B1000")
r = Application.Match(Cells(Li, 2).Value, Rng, 0)
If IsError(r) Then Exit Sub
Sheets("Feuil3").Range("C" & r & ":D" & r).Copy Destination:=Range("C" & Li & ":D" & Li)
Set Rng = Nothing
End Sub

Sub macro3(Li)
Dim Rng As Range, r As Variant
Set Rng = Sheets("Feuil3").Range("C1:C1000")
r = Application.Match(Cells(Li, 3).Value, Rng, 0)
If IsError(r) Then Exit Sub
Sheets("Feuil3").Range("D" & r & ":D" & r).Copy Destination:=Range("D" & Li & ":D" & Li)
Set Rng = Nothing
End Sub
'*************************************
--
Amicalement

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


"Quetzalcoatl" a écrit dans le message de
news:bo0skn$ik0$
Bonsoir,

J'utilise un fichier EXCEL dans lequel je saisis régulièrement des données.
Chaque nouvelle entrée correspond à une nouvelle ligne à saisir.
Chaque ligne comporte plusieurs champs (colonnes) à saisir.
Dans certains cas, la connaissance de l'un des champs permettrait de renseigner
automatiquement la plupart des autres champs de la ligne considérée. C'est
pourquoi je voudrais créer une macro VBA qui, lorsqu'elle reconnaîtrait telle ou
telle chaîne de caractères saisie dans l'un des champs, renseignerait
automatiquement certains autres champs.
Pour plus de souplesse, j'aimerais paramétrer cette macro par un tableau qui
serait une sorte d'image de la structure de mon fichier, comportant en colonne
les différents champs et en ligne les quelques différents "motifs" répétitifs.

Toute aide ou conseil seraient bienvenus, car je ne sais pas trop comment m'y
prendre !

Merci d'avance.
--
Avete amici




Avatar
Quetzalcoatl
Salut Quetzalcoatl

- J'ai supposé le tableau "d'image de la structure du fichier"
en A1:Dx de la Feuil3
[...couic...]


Merci beaucoup, ça fonctionne parfaitement !

J'ai mis du temps à comprendre.
Pas évident le :
If target.Cells.Count > 1 Then Exit Sub
J'ai rejouté un :
Application.ScreenUpdating = False
[...]
Application.ScreenUpdating = True
parce que j'avais des effets d'affichage bizarres.

Merci encore.

--
Salutu

Avatar
Jean-François Aubert
C'était avec plaisir...

--
Amicalement

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


"Quetzalcoatl" a écrit dans le message de
news:bo3gke$2g7$
Salut Quetzalcoatl

- J'ai supposé le tableau "d'image de la structure du fichier"
en A1:Dx de la Feuil3
[...couic...]


Merci beaucoup, ça fonctionne parfaitement !

J'ai mis du temps à comprendre.
Pas évident le :
If target.Cells.Count > 1 Then Exit Sub
J'ai rejouté un :
Application.ScreenUpdating = False
[...]
Application.ScreenUpdating = True
parce que j'avais des effets d'affichage bizarres.

Merci encore.

--
Salutu