Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

macro pour exploiter une base de données

13 réponses
Avatar
newoceane2000
Bonjour,

J'ai un tableau excel qui se pr=E9sente comme ci dessous :

Produit Allemagne Afrique Am=E9rique du nord
Camion oui non non
Voiture non non non
Scooter non oui non
Bateau non non oui
Moto oui non oui

En r=E9alit=E9 j'ai une liste de produits tr=E8s importante et qui n'est pas
d=E9finitive (ajout de produits r=E9guli=E8rement dans la base de donn=E9es=
)=2E

Serait-il possible qu'une macro puisse indiquer la liste des pays dans
lequel un produit choisi est vendu ?

ex : moto....> Allemagne, Am=E9rique du nord

De m=EAme une autre macro peut elle indiquer la liste des produits
vendus par pays ?

Ex: Allemagne ...>Camion, Moto


Merci d'avance pour vos r=E9ponses

10 réponses

1 2
Avatar
Gloops
a écrit, le 11/11/2007 15:37 :
Bonjour,


Bonjour,


J'ai un tableau excel qui se présente comme ci dessous :

Produit Allemagne Afrique Amérique du nord
Camion oui non non


Serait-il possible qu'une macro puisse indiquer la liste des pays dans
lequel un produit choisi est vendu ?


Une procédure, ça te va ?
Je pars du principe que le tableau des produits par pays est seul sur la
feuille. Je te laisse corriger le nom de la feuille.
Il faudra aussi fournir une interface, peut-être était-ce pour ça q ue tu
préférais une macro ?
Le mieux c'est une boîte de dialogue utilisateur, mais je vais
simplifier en proposant CreationProduit, à la fin.

Sub CreeProduit(NomProduit As String, Allemagne As Boolean, Afrique As
Boolean, Amerique As Boolean)
Dim Feuil As Worksheet
Dim numligne As Integer
Set Feuil = Worksheets("Là où ce que j'ai rangé mes produits ")
numligne = Feuil.UsedRange.Rows.Count + 1
Feuil.Cells(numligne, 1) = NomProduit
Feuil.Cells(numligne, 2) = Allemagne
Feuil.Cells(numligne, 3) = Afrique
Feuil.Cells(numligne, 4) = Amerique
Set Feuil = Nothing
End Sub

Public Sub CreationProduit()
Dim Produit As String
Dim Allemagne As Boolean, Afrique As Boolean, Amerique As Boolean
Produit = InputBox("Nom du produit")
Allemagne = MsgBox("Allemagne ?", vbYesNo)
Afrique = MsgBox("Afrique ?", vbYesNo)
Amerique = MsgBox("Amérique du Nord ?", vbYesNo)
CreeProduit Produit, Allemagne, Afrique, Amerique
End Sub



Bien entendu il reste à tester ça.


ex : moto....> Allemagne, Amérique du nord

De même une autre macro peut elle indiquer la liste des produits
vendus par pays ?

Ex: Allemagne ...>Camion, Moto


Je le fais vite fait de mémoire, il existe peut-être une fonction qui
fait ça de façon plus "élégante". Je serais d'ailleurs tenté de chercher
du côté d'une requête SQL, du style "SELECT Produit From Tableau WH ERE
Allemagne=True", ensuite il faut creuser la notion de requête
paramétrable, pour fournir le pays en paramètre.

J'ai éteint ma machine où il y a Excel aussi je me simplifie la vie e n
passant la colonne en argument, de 2 à 4. Il existe une fonction d'Exce l
qui permet de trouver le numéro de colonne d'après l'intitulé.

Public Function ListeProduitsDansPays(numPays As Integer) As String
Dim Feuil As Worksheet
Dim R As Field
Set Feuil = Worksheets("Là où ce que j'ai rangé mes produits ")
For Each R in Feuil.UsedRange.Rows
If R.Cells(numPays) = True then
ListeProduitsDansPays = ListeProduitsDansPays + _
", " + R.Cells(numPays)
End If
Next
If Len(ListeProduitsDansPays) > 3 Then
ListeProduitsDansPays = Mid$(ListeProduitsDansPays, 3)
End If
Set R = Nothing
Set Feuil = Nothing
End Function

Là aussi c'est à tester.

Dans certaines versions d'Excel Mid$ nécessite impérativement trois
paramètres. Dans ce cas :
If Len(ListeProduitsDansPays) > 3 Then
ListeProduitsDansPays = _
Right$(ListeProduitsDansPays, Len(ListeProduitsDansPays) - 3)
End If

Avatar
Gloops
Gloops a écrit, le 11/11/2007 17:36 :

Youps, l'avantage à faire tout de tête c'est qu'on gagne du temps, ma is
le danger, c'est que ça laisse passer plus de bêtises.

MsgBox, avec vbYesNo en argument flag, va retourner 6 ou 7, alors qu'on
attend 0 ou -1. Je serais donc tenté de mettre plutôt :

Public Sub CreationProduit()
Dim Produit As String
Dim Allemagne As Boolean, Afrique As Boolean, Amerique As Boolean
Produit = InputBox("Nom du produit")
Allemagne = (MsgBox("Allemagne ?", vbYesNo) = vbYes)
Afrique = (MsgBox("Afrique ?", vbYesNo) = vbYes)
Amerique = (MsgBox("Amérique du Nord ?", vbYesNo) = vbYes)
CreeProduit Produit, Allemagne, Afrique, Amerique
End Sub



Bien entendu il reste à tester ça.


Du coup, voilà qui se confirme.

Avatar
JB
Bonjour,

http://cjoint.com/?llr5t7USHw

JB

On 11 nov, 15:37, wrote:
Bonjour,

J'ai un tableau excel qui se présente comme ci dessous :

Produit Allemagne Afrique Amérique du nord
Camion oui non non
Voiture non non non
Scooter non oui non
Bateau non non oui
Moto oui non oui

En réalité j'ai une liste de produits très importante et qui n'est pas
définitive (ajout de produits régulièrement dans la base de donné es).

Serait-il possible qu'une macro puisse indiquer la liste des pays dans
lequel un produit choisi est vendu ?

ex : moto....> Allemagne, Amérique du nord

De même une autre macro peut elle indiquer la liste des produits
vendus par pays ?

Ex: Allemagne ...>Camion, Moto

Merci d'avance pour vos réponses


Avatar
newoceane2000
Merci beaucoup JB, cependant ça ne marche pas sur mon fichier Excel.

J'ai pourtant creer les noms produit, pays et ok et changer la
référence de la cellule où j'ai mis la liste déroulante et j'obtiens
un résultat qui est faux.

Que faut-il faire d'autre pour adapter la formule? Pouver vous me
détailler la logique de la formule pour que je puisse l'adapter.

Quand à la solution de Gloups, comme je ne suis pas très forte en vba
je ne sais pas trop où inserer les différentes macros et ça n'a pas
l'air de marcher (mais encore une fois ça viens peut être de moi).

Merci beaucoup pour vos réponses



On 11 nov, 17:57, JB wrote:
Bonjour,

http://cjoint.com/?llr5t7USHw

JB

On 11 nov, 15:37, wrote:



Bonjour,

J'ai un tableau excel qui se présente comme ci dessous :

Produit Allemagne Afrique Amérique du nord
Camion oui non non
Voiture non non non
Scooter non oui non
Bateau non non oui
Moto oui non oui

En réalité j'ai une liste de produits très importante et qui n'es t pas
définitive (ajout de produits régulièrement dans la base de donn ées).

Serait-il possible qu'une macro puisse indiquer la liste des pays dans
lequel un produit choisi est vendu ?

ex : moto....> Allemagne, Amérique du nord

De même une autre macro peut elle indiquer la liste des produits
vendus par pays ?

Ex: Allemagne ...>Camion, Moto

Merci d'avance pour vos réponses- Masquer le texte des messages pré cédents -


- Afficher le texte des messages précédents -



Avatar
JB
http://cjoint.com/?llu2SnasJP

Ce sont des formules matricielles:

Sélectionner I1:K1
=SI(ESTNUM(GRANDE.VALEUR(SI(INDEX(ok;EQUIV(G2;produit;
0);)="oui";COLONNE(Pays)-COLONNE(INDEX(Pays;
1;1))-1);COLONNE(INDIRECT("1:"&COLONNES(Pays)))));
INDEX(Pays;GRANDE.VALEUR(SI(INDEX(ok;EQUIV(G2;produit;
0);)="oui";COLONNE(Pays)-COLONNE(INDEX(Pays;
1;1)));COLONNE(INDIRECT("1:"&COLONNES(Pays)))));"")
Valider avec Maj+Ctrl+Entrée

Sélectionner G14:G17
=SI(ESTNUM(GRANDE.VALEUR(SI(INDEX(ok;;EQUIV(G14;Pays;
0))="oui";LIGNE(produit)-LIGNE(INDEX(produit;
1;1)));LIGNE(INDIRECT("1:"&LIGNES(produit)))));
INDEX(produit;GRANDE.VALEUR(SI(INDEX(ok;;EQUIV(G14;Pays;
0))="oui";LIGNE(produit)-LIGNE(INDEX(produit;
1;1)));LIGNE(INDIRECT("1:"&LIGNES(produit)))
Valider avec Maj+Ctrl+Entrée

Postez votre fichier si ça ne fonctionne pas.

JB



On 11 nov, 20:15, wrote:
Merci beaucoup JB, cependant ça ne marche pas sur mon fichier Excel.

J'ai pourtant creer les noms produit, pays et ok et changer la
référence de la cellule où j'ai mis la liste déroulante et j'obti ens
un résultat qui est faux.

Que faut-il faire d'autre pour adapter la formule? Pouver vous me
détailler la logique de la formule pour que je puisse l'adapter.

Quand à la solution de Gloups, comme je ne suis pas très forte en vba
je ne sais pas trop où inserer les différentes macros et ça n'a pas
l'air de marcher (mais encore une fois ça viens peut être de moi).

Merci beaucoup pour vos réponses

On 11 nov, 17:57, JB wrote:



Bonjour,

http://cjoint.com/?llr5t7USHw

JB

On 11 nov, 15:37, wrote:

Bonjour,

J'ai un tableau excel qui se présente comme ci dessous :

Produit Allemagne Afrique Amérique du nord
Camion oui non non
Voiture non non non
Scooter non oui non
Bateau non non oui
Moto oui non oui

En réalité j'ai une liste de produits très importante et qui n' est pas
définitive (ajout de produits régulièrement dans la base de don nées).

Serait-il possible qu'une macro puisse indiquer la liste des pays dans
lequel un produit choisi est vendu ?

ex : moto....> Allemagne, Amérique du nord

De même une autre macro peut elle indiquer la liste des produits
vendus par pays ?

Ex: Allemagne ...>Camion, Moto

Merci d'avance pour vos réponses- Masquer le texte des messages pr écédents -


- Afficher le texte des messages précédents -- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -




Avatar
Fredo P.
Le filtre automatique semblerait être une solution.
http://cjoint.com/?llvhucTNCr
a écrit dans le message de news:

Bonjour,

J'ai un tableau excel qui se présente comme ci dessous :

Produit Allemagne Afrique Amérique du nord
Camion oui non non
Voiture non non non
Scooter non oui non
Bateau non non oui
Moto oui non oui

En réalité j'ai une liste de produits très importante et qui n'est pas
définitive (ajout de produits régulièrement dans la base de données).

Serait-il possible qu'une macro puisse indiquer la liste des pays dans
lequel un produit choisi est vendu ?

ex : moto....> Allemagne, Amérique du nord

De même une autre macro peut elle indiquer la liste des produits
vendus par pays ?

Ex: Allemagne ...>Camion, Moto


Merci d'avance pour vos réponses
Avatar
Jac
Bonjour Newoceane,

je crois que le plus simple serait de gérer tes données comme une base de
données, à savoir, une ligne pour chaque "couple" continent + pays +
produit. Inutile de traiter les "non". Mais tu pourrais facilement ajouter
les quantités et/ou valeurs.
Ensuite un simple filtre automatique pour choisir un continent, un pays ou
un produit ou les deux ou les trois et le tour est joué et à l'occasion
quelques tris pour gérer l'affichage.

Pas besoin de macros, ni de formules compliquées.
http://cjoint.com/?lmi2OtVWED

On en reparle quand tu veux.

Jac

a écrit dans le message de news:

Bonjour,

J'ai un tableau excel qui se présente comme ci dessous :

Produit Allemagne Afrique Amérique du nord
Camion oui non non
Voiture non non non
Scooter non oui non
Bateau non non oui
Moto oui non oui

En réalité j'ai une liste de produits très importante et qui n'est pas
définitive (ajout de produits régulièrement dans la base de données).

Serait-il possible qu'une macro puisse indiquer la liste des pays dans
lequel un produit choisi est vendu ?

ex : moto....> Allemagne, Amérique du nord

De même une autre macro peut elle indiquer la liste des produits
vendus par pays ?

Ex: Allemagne ...>Camion, Moto


Merci d'avance pour vos réponses
Avatar
newoceane2000
Bonsoir JB,

J'ai suivi vos indications et malheureusement je ne suis vraiment pas
douée car ça ne marche pas.

Voici mon fichier :

http://cjoint.com/?lmuP42Cpof

Pouvez vous me dire pouquoi ça ne marche pas?

Pour les autres solutions avec des filtres automatiques, je vous
remercie mais ça ne va pas me convenir car je ne peux pas changer la
présentation de mon tableau.

Merci pour vos réponses




On 11 nov, 20:57, JB wrote:
http://cjoint.com/?llu2SnasJP

Ce sont des formules matricielles:

Sélectionner I1:K1
=SI(ESTNUM(GRANDE.VALEUR(SI(INDEX(ok;EQUIV(G2;produit;
0);)="oui";COLONNE(Pays)-COLONNE(INDEX(Pays;
1;1))-1);COLONNE(INDIRECT("1:"&COLONNES(Pays)))));
INDEX(Pays;GRANDE.VALEUR(SI(INDEX(ok;EQUIV(G2;produit;
0);)="oui";COLONNE(Pays)-COLONNE(INDEX(Pays;
1;1)));COLONNE(INDIRECT("1:"&COLONNES(Pays)))));"")
Valider avec Maj+Ctrl+Entrée

Sélectionner G14:G17
=SI(ESTNUM(GRANDE.VALEUR(SI(INDEX(ok;;EQUIV(G14;Pays;
0))="oui";LIGNE(produit)-LIGNE(INDEX(produit;
1;1)));LIGNE(INDIRECT("1:"&LIGNES(produit)))));
INDEX(produit;GRANDE.VALEUR(SI(INDEX(ok;;EQUIV(G14;Pays;
0))="oui";LIGNE(produit)-LIGNE(INDEX(produit;
1;1)));LIGNE(INDIRECT("1:"&LIGNES(produit)))
Valider avec Maj+Ctrl+Entrée

Postez votre fichier si ça ne fonctionne pas.

JB

On 11 nov, 20:15, wrote:



Merci beaucoup JB, cependant ça ne marche pas sur mon fichier Excel.

J'ai pourtant creer les noms produit, pays et ok et changer la
référence de la cellule où j'ai mis la liste déroulante et j'ob tiens
un résultat qui est faux.

Que faut-il faire d'autre pour adapter la formule? Pouver vous me
détailler la logique de la formule pour que je puisse l'adapter.

Quand à la solution de Gloups, comme je ne suis pas très forte en v ba
je ne sais pas trop où inserer les différentes macros et ça n'a p as
l'air de marcher (mais encore une fois ça viens peut être de moi).

Merci beaucoup pour vos réponses

On 11 nov, 17:57, JB wrote:

Bonjour,

http://cjoint.com/?llr5t7USHw

JB

On 11 nov, 15:37, wrote:

Bonjour,

J'ai un tableau excel qui se présente comme ci dessous :

Produit Allemagne Afrique Amérique du nord
Camion oui non non
Voiture non non non
Scooter non oui non
Bateau non non oui
Moto oui non oui

En réalité j'ai une liste de produits très importante et qui n'est pas
définitive (ajout de produits régulièrement dans la base de d onnées).

Serait-il possible qu'une macro puisse indiquer la liste des pays d ans
lequel un produit choisi est vendu ?

ex : moto....> Allemagne, Amérique du nord

De même une autre macro peut elle indiquer la liste des produits
vendus par pays ?

Ex: Allemagne ...>Camion, Moto

Merci d'avance pour vos réponses- Masquer le texte des messages p récédents -


- Afficher le texte des messages précédents -- Masquer le texte d es messages précédents -


- Afficher le texte des messages précédents -- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -





Avatar
JB
Bonsoir,

http://cjoint.com/?lmvyD00xbh

JB

On 12 nov, 20:44, wrote:
Bonsoir JB,

J'ai suivi vos indications et malheureusement je ne suis vraiment pas
douée car ça ne marche pas.

Voici mon fichier :

http://cjoint.com/?lmuP42Cpof

Pouvez vous me dire pouquoi ça ne marche pas?

Pour les autres solutions avec des filtres automatiques, je vous
remercie mais ça ne va pas me convenir car je ne peux pas changer la
présentation de mon tableau.

Merci pour vos réponses

On 11 nov, 20:57, JB wrote:



http://cjoint.com/?llu2SnasJP

Ce sont des formules matricielles:

Sélectionner I1:K1
=SI(ESTNUM(GRANDE.VALEUR(SI(INDEX(ok;EQUIV(G2;produit;
0);)="oui";COLONNE(Pays)-COLONNE(INDEX(Pays;
1;1))-1);COLONNE(INDIRECT("1:"&COLONNES(Pays)))));
INDEX(Pays;GRANDE.VALEUR(SI(INDEX(ok;EQUIV(G2;produit;
0);)="oui";COLONNE(Pays)-COLONNE(INDEX(Pays;
1;1)));COLONNE(INDIRECT("1:"&COLONNES(Pays)))));"")
Valider avec Maj+Ctrl+Entrée

Sélectionner G14:G17
=SI(ESTNUM(GRANDE.VALEUR(SI(INDEX(ok;;EQUIV(G14;Pays;
0))="oui";LIGNE(produit)-LIGNE(INDEX(produit;
1;1)));LIGNE(INDIRECT("1:"&LIGNES(produit)))));
INDEX(produit;GRANDE.VALEUR(SI(INDEX(ok;;EQUIV(G14;Pays;
0))="oui";LIGNE(produit)-LIGNE(INDEX(produit;
1;1)));LIGNE(INDIRECT("1:"&LIGNES(produit)))
Valider avec Maj+Ctrl+Entrée

Postez votre fichier si ça ne fonctionne pas.

JB

On 11 nov, 20:15, wrote:

Merci beaucoup JB, cependant ça ne marche pas sur mon fichier Excel.

J'ai pourtant creer les noms produit, pays et ok et changer la
référence de la cellule où j'ai mis la liste déroulante et j' obtiens
un résultat qui est faux.

Que faut-il faire d'autre pour adapter la formule? Pouver vous me
détailler la logique de la formule pour que je puisse l'adapter.

Quand à la solution de Gloups, comme je ne suis pas très forte en vba
je ne sais pas trop où inserer les différentes macros et ça n'a pas
l'air de marcher (mais encore une fois ça viens peut être de moi).

Merci beaucoup pour vos réponses

On 11 nov, 17:57, JB wrote:

Bonjour,

http://cjoint.com/?llr5t7USHw

JB

On 11 nov, 15:37, wrote:

Bonjour,

J'ai un tableau excel qui se présente comme ci dessous :

Produit Allemagne Afrique Amérique du nord
Camion oui non non
Voiture non non non
Scooter non oui non
Bateau non non oui
Moto oui non oui

En réalité j'ai une liste de produits très importante et qu i n'est pas
définitive (ajout de produits régulièrement dans la base de données).

Serait-il possible qu'une macro puisse indiquer la liste des pays dans
lequel un produit choisi est vendu ?

ex : moto....> Allemagne, Amérique du nord

De même une autre macro peut elle indiquer la liste des produits
vendus par pays ?

Ex: Allemagne ...>Camion, Moto

Merci d'avance pour vos réponses- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -- Masquer le texte d es messages précédents -


- Afficher le texte des messages précédents -- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -






Avatar
newoceane2000
Merci beaucoup JB.

Peux-tu juste me préciser pourquoi ce que j'ai fait ne marchais pas ?

On 12 nov, 21:24, JB wrote:
Bonsoir,

http://cjoint.com/?lmvyD00xbh

JB

On 12 nov, 20:44, wrote:



Bonsoir JB,

J'ai suivi vos indications et malheureusement je ne suis vraiment pas
douée car ça ne marche pas.

Voici mon fichier :

http://cjoint.com/?lmuP42Cpof

Pouvez vous me dire pouquoi ça ne marche pas?

Pour les autres solutions avec des filtres automatiques, je vous
remercie mais ça ne va pas me convenir car je ne peux pas changer la
présentation de mon tableau.

Merci pour vos réponses

On 11 nov, 20:57, JB wrote:

http://cjoint.com/?llu2SnasJP

Ce sont des formules matricielles:

Sélectionner I1:K1
=SI(ESTNUM(GRANDE.VALEUR(SI(INDEX(ok;EQUIV(G2;produit;
0);)="oui";COLONNE(Pays)-COLONNE(INDEX(Pays;
1;1))-1);COLONNE(INDIRECT("1:"&COLONNES(Pays)))));
INDEX(Pays;GRANDE.VALEUR(SI(INDEX(ok;EQUIV(G2;produit;
0);)="oui";COLONNE(Pays)-COLONNE(INDEX(Pays;
1;1)));COLONNE(INDIRECT("1:"&COLONNES(Pays)))));"")
Valider avec Maj+Ctrl+Entrée

Sélectionner G14:G17
=SI(ESTNUM(GRANDE.VALEUR(SI(INDEX(ok;;EQUIV(G14;Pays;
0))="oui";LIGNE(produit)-LIGNE(INDEX(produit;
1;1)));LIGNE(INDIRECT("1:"&LIGNES(produit)))));
INDEX(produit;GRANDE.VALEUR(SI(INDEX(ok;;EQUIV(G14;Pays;
0))="oui";LIGNE(produit)-LIGNE(INDEX(produit;
1;1)));LIGNE(INDIRECT("1:"&LIGNES(produit)))
Valider avec Maj+Ctrl+Entrée

Postez votre fichier si ça ne fonctionne pas.

JB

On 11 nov, 20:15, wrote:

Merci beaucoup JB, cependant ça ne marche pas sur mon fichier Exc el.

J'ai pourtant creer les noms produit, pays et ok et changer la
référence de la cellule où j'ai mis la liste déroulante et j'obtiens
un résultat qui est faux.

Que faut-il faire d'autre pour adapter la formule? Pouver vous me
détailler la logique de la formule pour que je puisse l'adapter.

Quand à la solution de Gloups, comme je ne suis pas très forte en vba
je ne sais pas trop où inserer les différentes macros et ça n 'a pas
l'air de marcher (mais encore une fois ça viens peut être de mo i).

Merci beaucoup pour vos réponses

On 11 nov, 17:57, JB wrote:

Bonjour,

http://cjoint.com/?llr5t7USHw

JB

On 11 nov, 15:37, wrote:

Bonjour,

J'ai un tableau excel qui se présente comme ci dessous :

Produit Allemagne Afrique Amérique du nord
Camion oui non non
Voiture non non non
Scooter non oui non
Bateau non non oui
Moto oui non oui

En réalité j'ai une liste de produits très importante et qui n'est pas
définitive (ajout de produits régulièrement dans la base de données).

Serait-il possible qu'une macro puisse indiquer la liste des pa ys dans
lequel un produit choisi est vendu ?

ex : moto....> Allemagne, Amérique du nord

De même une autre macro peut elle indiquer la liste des produ its
vendus par pays ?

Ex: Allemagne ...>Camion, Moto

Merci d'avance pour vos réponses- Masquer le texte des messag es précédents -


- Afficher le texte des messages précédents -- Masquer le tex te des messages précédents -


- Afficher le texte des messages précédents -- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -- Masquer le texte d es messages précédents -


- Afficher le texte des messages précédents -- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -







1 2