EXTRACTION DES DONNEES

  • Initiateur de la discussion BAMS
  • Date de début
B

BAMS

Guest
J'ai une feuille de calcul excel nommée (DP) contenant des données spécifiques qui me permettent d'établir des statistiques sur un autre classeur en liaison avec DP, nomme (2004).

Jusqu'à maintenant tout fonctionne correctement avec les formules simples et complexes ex: mise en forme conditionnelle, ajput de lignes avec macro, validation de saisie etc...

j'ai besoin d'extraire des données de la feuille (DP) dans d'autres feuilles du même classeur nommées T1, T2, T3 et T4 selon la valeur de la décision en particulier.

les critères utilisés sont : Sexe ou/et Région ou/et ou/et décision etc... au plus trois critères à la fois.

Nombre de liges total (DP) est d'environ 5000.
Nombre de lignes max à extraire à la fois (T1 ou T2 ou T3 ou T4) est de 500.

Merci de me fournir la macro correspondante.
 
A

andré

Guest
Salut BAMS,

Ne t'étonne pas de ne pas encore avoir reçu de réponse à ta question, mais elle ne correspond pas exactement à l'esprit de ce forum.

D'abord, nous avons l'habitude, sur ce forum, de saluer nos interlocuteurs : quoi de plus normal, quand on entre chez quelqu'un à l'improviste, le minimum est de le saluer.

Ensuite, les intervenants de ce forum ne sont pas des prestataires de service et ils n'ont aucune obligation de "fournir" quoique que ce soit (ce terme me reste quelque peu dans la gorge).

Enfin, ce forum ne sert pas à faire le travail en lieu et place d'un autre, mais tout au plus de donner le petit coup de pouce à celui qui cherche depuis des heures à résoudre un problème et qui, en désespoir de cause, adresse un mesage avec l'espoir que quelqu'un prendra cinq minutes de son temps pour le dépanner bénévolement.

A ce sujet, je me permets de te conseiller de lire la charte du forum.

Mais comme il me semble que tu es nouveau sur ce forum, je te pardonne bien volontiers.

Pour ce qui est de ta question, n'ayant pas tes fichiers sous les yeux, je te conseillerais de voir du côté d'un tri élaboré avec copie à un autre emplacement.

Si cela te convient, tu peux en faire une petite macro (quitte à l'enregister).

A bientôt.
Ândré.
 
@

@+Thierry

Guest
Bonjour Ândré, Bams, le Forum

Oui je suis tout à fait d'accord avec toi Ândré, le Chocolat Belge est bien meilleur que le Chocolat Suisse.... Arf non c'est pas dans ce post !! lol

Non dans ce Post aussi je suis tout à fait d'accord avec toi, ici on ne founit rien du tout rien que le mot m'exaspère !!! même de la part de mes managers !

Bon sinon plus sérieusement pour BAMS, déjà il faudrait connaitre ton niveau en VBA car ce que tu demandes n'est pas à la porté d'un débutant "premier niveau".....

Ce que je peux te conseiller pour commencer après avoir lu notre Charte c'est une simple boucle For Each pour voir.... mais sur 5000 lignes çà va mouliner un bail si on doit scanner trois colonnes (les 3 critères) .... Si tu as un niveau un peu plus avancé on peut te conseiller de travailler sur des tableaux indexés séquentiellement, mais ce sera une autre histoire pour adapter ensuite si tu n'es pas familier avec la programmation...


Imaginons que tu aies ta Feuille "DP" constitué de 5 colonnes :
Colonne A = Nom
Colonne B = Prénom
Colonne C= Sexe
Colonne D = Region
Colonne E = Décision

Imaginon que dans une Feuille "Interface" tu renseignes tes trois Critères de Sélections
Cellule "A1" = Sexe
Cellule "A2" = Region
Cellule "A3" = Décision

Et que tu veuilles copier les données qui vont matcher avec les trois critères saisis en Feuille "Interface", vers une Feuille "Extraction"...

Tu dois faire déjà une produre comme ceci :

Sub Extraction()
Dim Cell As Range
Dim Plage As Range
Dim Crit1 As String, Crit2 As String, Crit3 As String
Dim L As Integer
Dim WS As Worksheet
Set WS = Sheets("DP")
Set Plage = WS.Range("A1:A" & WS.Range("A65536").End(xlUp).Row)


With Sheets("Interface")
Crit1 = .Range("A1")
Crit2 = .Range("A2")
Crit3 = .Range("A3")
End With

For Each Cell In Plage

If Cell.Offset(0, 2) = Crit1 And Cell.Offset(0, 3) = Crit2 And Cell.Offset(0, 4) = Crit3 Then
With Sheets("Extraction")
L = .Range("A65536").End(xlUp).Row + 1
Range("A" & L) = Cell
Range("B" & L) = Cell.Offset(0, 1)
Range("C" & L) = Cell.Offset(0, 2)
Range("D" & L) = Cell.Offset(0, 3)
Range("E" & L) = Cell.Offset(0, 4)
End With
End If
Next Cell
End Sub


Voilà déjà pour une base de départ... Bon Week End à Tous et Toutes
@+Thierry
 

Discussions similaires

Statistiques des forums

Discussions
312 683
Messages
2 090 896
Membres
104 690
dernier inscrit
caujolle