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

Macro extraction de données

4 réponses
Avatar
PLG
Bonsoir à tous

Je souhaiterais extraire des données d'une base à partir d'un critére.
Ex : dans ma base, Col A j'ai les dates, Col B un nom, Col C une valeur.
des données sont ajoutées tous les jours.
Je souhaite sur un formulaire extraire les données ( Col A à C ) à partir de
la date saisie sur le formulaire ( disons que le formulaire se situe Feuil 2,
et la date en A1 de la Feuil 2).
Je sais que pour certains d'entre vous c'est.... très simple... mais pour
moi le code VBA, c'est pas encore ça !
Je vais m'y mettre... c'est promis !

Merci et à bientôt vous lire.
Cordialement

4 réponses

Avatar
FFO
Salut à toi

Soit Feuil1 colonne A les dates Colonne B les noms Colonne C les chiffres
Soit Feuil2 cellule A1 la date recherchée

Le code :

Sheets("Feuil1").Activate
For Each c In Worksheets("Feuil1").Range("A1", [A65535].End(xlUp))
If c = Sheets("Feuil2").Range("A1") Then
Sheets("Feuil2").Range("B1", "C1").Value = Range(c.Offset(0, 1), c.Offset(0,
2)).Value
Exit For
End If
Next

Tu peux aussi mettre dans le VBA de la feuil2 ce code :

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As
Boolean)
Sheets("Feuil1").Activate
Sheets("Feuil1").Range("A65535").End(xlUp).Activate
For Each c In Worksheets("Feuil1").Range(ActiveCell, "A1")
If c = Sheets("Feuil2").Range("A1") Then
Sheets("Feuil2").Range("B1").Value = c.Offset(0, 1).Value
Sheets("Feuil2").Range("C1").Value = c.Offset(0, 2).Value
Exit For
End If
Next
Sheets("Feuil2").Activate
End Sub

Par simple doubleclik de la cellule A1 Feuil2 tu as les valeurs de la feuil1
pour la date saisie dans cette cellule

qu'en penses tu ???


Bonsoir à tous

Je souhaiterais extraire des données d'une base à partir d'un critére.
Ex : dans ma base, Col A j'ai les dates, Col B un nom, Col C une valeur.
des données sont ajoutées tous les jours.
Je souhaite sur un formulaire extraire les données ( Col A à C ) à partir de
la date saisie sur le formulaire ( disons que le formulaire se situe Feuil 2,
et la date en A1 de la Feuil 2).
Je sais que pour certains d'entre vous c'est.... très simple... mais pour
moi le code VBA, c'est pas encore ça !
Je vais m'y mettre... c'est promis !

Merci et à bientôt vous lire.
Cordialement



Avatar
PLG
Bonsoir FFO

D'abord, merci de t'être penché sur mon cas.
En fait ta 1ère macro copie bien les données en Col B et Col C, mais que 1
seule, si j'ai 3 entrées avec la même date elle ne prend que la 1ère, je
peux en avoir une quinzaine à la même date !
Quand à la seconde... ça ne fonctionne pas, peut être n'ai je pas copié ton
code comme il le fallait ?
C'est sympa ton idée, mais je préfère la première avec un bouton de commande
pour la lancer.

Si ce n'est pas trop te demander.... tu peux essayer de me récupérer
plusieurs lignes ayant la même date...!?
En fait, si tu veux bien, la feuille 1 reste la même, mais sur la Feuil 2,
je saisis la date en A1 ( ça ça ne change pas ) et j'aimerais que tu me
renvoies les données de la col B en C5 de la feuil 2, et les données de la
Col C en D5... de la feuille 2....
Dis... c'est possible ??

D'avance merci de ta sollicitude
Cordialement



Salut à toi

Soit Feuil1 colonne A les dates Colonne B les noms Colonne C les chiffres
Soit Feuil2 cellule A1 la date recherchée

Le code :

Sheets("Feuil1").Activate
For Each c In Worksheets("Feuil1").Range("A1", [A65535].End(xlUp))
If c = Sheets("Feuil2").Range("A1") Then
Sheets("Feuil2").Range("B1", "C1").Value = Range(c.Offset(0, 1), c.Offset(0,
2)).Value
Exit For
End If
Next

Tu peux aussi mettre dans le VBA de la feuil2 ce code :

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As
Boolean)
Sheets("Feuil1").Activate
Sheets("Feuil1").Range("A65535").End(xlUp).Activate
For Each c In Worksheets("Feuil1").Range(ActiveCell, "A1")
If c = Sheets("Feuil2").Range("A1") Then
Sheets("Feuil2").Range("B1").Value = c.Offset(0, 1).Value
Sheets("Feuil2").Range("C1").Value = c.Offset(0, 2).Value
Exit For
End If
Next
Sheets("Feuil2").Activate
End Sub

Par simple doubleclik de la cellule A1 Feuil2 tu as les valeurs de la feuil1
pour la date saisie dans cette cellule

qu'en penses tu ???


Bonsoir à tous

Je souhaiterais extraire des données d'une base à partir d'un critére.
Ex : dans ma base, Col A j'ai les dates, Col B un nom, Col C une valeur.
des données sont ajoutées tous les jours.
Je souhaite sur un formulaire extraire les données ( Col A à C ) à partir de
la date saisie sur le formulaire ( disons que le formulaire se situe Feuil 2,
et la date en A1 de la Feuil 2).
Je sais que pour certains d'entre vous c'est.... très simple... mais pour
moi le code VBA, c'est pas encore ça !
Je vais m'y mettre... c'est promis !

Merci et à bientôt vous lire.
Cordialement





Avatar
FFO
Rebonjour à toi

Suivant tes nouvelles indications :

Soit Feuil1 colonne A les dates Colonne B les noms Colonne C les chiffres
Soit Feuil2 cellule A1 la date recherchée et à partir de B5 et C5 les
résultats trouvés rapportés l'un en dessous de l'autre :

Sheets("Feuil1").Activate
i = 0
For Each c In Worksheets("Feuil1").Range("A1", [A65535].End(xlUp))
If c = Sheets("Feuil2").Range("A1") Then
Sheets("Feuil2").Range("B" & 5 + i, "C" & 5 + i).Value = Range(c.Offset(0,
1), c.Offset(0, 2)).Value
i = i + 1
End If
Next

la partie ("B" & 5 + i, "C" & 5 + i) positionne les résultats successifs
Au premier résultat trouvé i = 0 les résultats se mettront donc en B5 et C5
Au Deuxième résultat trouvé i = 1 les résultats se mettront en B6 et C6
Etc...

Espérant que celà te convienne

Dis moi !!!





Bonsoir FFO

D'abord, merci de t'être penché sur mon cas.
En fait ta 1ère macro copie bien les données en Col B et Col C, mais que 1
seule, si j'ai 3 entrées avec la même date elle ne prend que la 1ère, je
peux en avoir une quinzaine à la même date !
Quand à la seconde... ça ne fonctionne pas, peut être n'ai je pas copié ton
code comme il le fallait ?
C'est sympa ton idée, mais je préfère la première avec un bouton de commande
pour la lancer.

Si ce n'est pas trop te demander.... tu peux essayer de me récupérer
plusieurs lignes ayant la même date...!?
En fait, si tu veux bien, la feuille 1 reste la même, mais sur la Feuil 2,
je saisis la date en A1 ( ça ça ne change pas ) et j'aimerais que tu me
renvoies les données de la col B en C5 de la feuil 2, et les données de la
Col C en D5... de la feuille 2....
Dis... c'est possible ??

D'avance merci de ta sollicitude
Cordialement



Salut à toi

Soit Feuil1 colonne A les dates Colonne B les noms Colonne C les chiffres
Soit Feuil2 cellule A1 la date recherchée

Le code :

Sheets("Feuil1").Activate
For Each c In Worksheets("Feuil1").Range("A1", [A65535].End(xlUp))
If c = Sheets("Feuil2").Range("A1") Then
Sheets("Feuil2").Range("B1", "C1").Value = Range(c.Offset(0, 1), c.Offset(0,
2)).Value
Exit For
End If
Next

Tu peux aussi mettre dans le VBA de la feuil2 ce code :

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As
Boolean)
Sheets("Feuil1").Activate
Sheets("Feuil1").Range("A65535").End(xlUp).Activate
For Each c In Worksheets("Feuil1").Range(ActiveCell, "A1")
If c = Sheets("Feuil2").Range("A1") Then
Sheets("Feuil2").Range("B1").Value = c.Offset(0, 1).Value
Sheets("Feuil2").Range("C1").Value = c.Offset(0, 2).Value
Exit For
End If
Next
Sheets("Feuil2").Activate
End Sub

Par simple doubleclik de la cellule A1 Feuil2 tu as les valeurs de la feuil1
pour la date saisie dans cette cellule

qu'en penses tu ???


Bonsoir à tous

Je souhaiterais extraire des données d'une base à partir d'un critére.
Ex : dans ma base, Col A j'ai les dates, Col B un nom, Col C une valeur.
des données sont ajoutées tous les jours.
Je souhaite sur un formulaire extraire les données ( Col A à C ) à partir de
la date saisie sur le formulaire ( disons que le formulaire se situe Feuil 2,
et la date en A1 de la Feuil 2).
Je sais que pour certains d'entre vous c'est.... très simple... mais pour
moi le code VBA, c'est pas encore ça !
Je vais m'y mettre... c'est promis !

Merci et à bientôt vous lire.
Cordialement







Avatar
PLG
Bonsoir FFO

Ben.... je te dis....c'est nickel !!
J'avais un soucis avec le renvoi de ligne ( ligne Sheets...) entre le 0, et
le 1)
Donc une erreur de syntaxe. il manquait un espace après la virgule, mais
comme l'Offset d'après il y en avait un...... j'ai supposé !

Je disais donc c'est nickel de chez nickel.
Je te remercie bien pour ton code ainsi que pour ta petite explication.
Je te souhaite une bonne soirée et te laisse jouer le St Bernard sur le forum.

à bientôt peut-être



Rebonjour à toi

Suivant tes nouvelles indications :

Soit Feuil1 colonne A les dates Colonne B les noms Colonne C les chiffres
Soit Feuil2 cellule A1 la date recherchée et à partir de B5 et C5 les
résultats trouvés rapportés l'un en dessous de l'autre :

Sheets("Feuil1").Activate
i = 0
For Each c In Worksheets("Feuil1").Range("A1", [A65535].End(xlUp))
If c = Sheets("Feuil2").Range("A1") Then
Sheets("Feuil2").Range("B" & 5 + i, "C" & 5 + i).Value = Range(c.Offset(0,
1), c.Offset(0, 2)).Value
i = i + 1
End If
Next

la partie ("B" & 5 + i, "C" & 5 + i) positionne les résultats successifs
Au premier résultat trouvé i = 0 les résultats se mettront donc en B5 et C5
Au Deuxième résultat trouvé i = 1 les résultats se mettront en B6 et C6
Etc...

Espérant que celà te convienne

Dis moi !!!





Bonsoir FFO

D'abord, merci de t'être penché sur mon cas.
En fait ta 1ère macro copie bien les données en Col B et Col C, mais que 1
seule, si j'ai 3 entrées avec la même date elle ne prend que la 1ère, je
peux en avoir une quinzaine à la même date !
Quand à la seconde... ça ne fonctionne pas, peut être n'ai je pas copié ton
code comme il le fallait ?
C'est sympa ton idée, mais je préfère la première avec un bouton de commande
pour la lancer.

Si ce n'est pas trop te demander.... tu peux essayer de me récupérer
plusieurs lignes ayant la même date...!?
En fait, si tu veux bien, la feuille 1 reste la même, mais sur la Feuil 2,
je saisis la date en A1 ( ça ça ne change pas ) et j'aimerais que tu me
renvoies les données de la col B en C5 de la feuil 2, et les données de la
Col C en D5... de la feuille 2....
Dis... c'est possible ??

D'avance merci de ta sollicitude
Cordialement



Salut à toi

Soit Feuil1 colonne A les dates Colonne B les noms Colonne C les chiffres
Soit Feuil2 cellule A1 la date recherchée

Le code :

Sheets("Feuil1").Activate
For Each c In Worksheets("Feuil1").Range("A1", [A65535].End(xlUp))
If c = Sheets("Feuil2").Range("A1") Then
Sheets("Feuil2").Range("B1", "C1").Value = Range(c.Offset(0, 1), c.Offset(0,
2)).Value
Exit For
End If
Next

Tu peux aussi mettre dans le VBA de la feuil2 ce code :

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As
Boolean)
Sheets("Feuil1").Activate
Sheets("Feuil1").Range("A65535").End(xlUp).Activate
For Each c In Worksheets("Feuil1").Range(ActiveCell, "A1")
If c = Sheets("Feuil2").Range("A1") Then
Sheets("Feuil2").Range("B1").Value = c.Offset(0, 1).Value
Sheets("Feuil2").Range("C1").Value = c.Offset(0, 2).Value
Exit For
End If
Next
Sheets("Feuil2").Activate
End Sub

Par simple doubleclik de la cellule A1 Feuil2 tu as les valeurs de la feuil1
pour la date saisie dans cette cellule

qu'en penses tu ???


Bonsoir à tous

Je souhaiterais extraire des données d'une base à partir d'un critére.
Ex : dans ma base, Col A j'ai les dates, Col B un nom, Col C une valeur.
des données sont ajoutées tous les jours.
Je souhaite sur un formulaire extraire les données ( Col A à C ) à partir de
la date saisie sur le formulaire ( disons que le formulaire se situe Feuil 2,
et la date en A1 de la Feuil 2).
Je sais que pour certains d'entre vous c'est.... très simple... mais pour
moi le code VBA, c'est pas encore ça !
Je vais m'y mettre... c'est promis !

Merci et à bientôt vous lire.
Cordialement