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 !
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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
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" <quetzalNSPMcoatl@free.fr> a écrit dans le message de
news:bo0skn$ik0$1@news-reader1.wanadoo.fr...
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
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
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
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) ?
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
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
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" <quetzalNSPMcoatl@free.fr> a écrit dans le message de
news:bo0skn$ik0$1@news-reader1.wanadoo.fr...
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 !
- 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
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
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.
- 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
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
C'était avec plaisir...
--
Amicalement
Jean-François Aubert
{Vaudois de la Côte Lémanique}
"Quetzalcoatl" <quetzalNSPMcoatl@free.fr> a écrit dans le message de
news:bo3gke$2g7$1@news-reader1.wanadoo.fr...
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.
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.