Comment regrouper des donnees provenant de plusieurs pages avec condition

pierrot13

XLDnaute Nouveau
Bonjour a tous !

Je suis vraiment desole d etre aussi brusque ( pris par le temps, j ai deja poste un message sur le forum, sans succes pour l instant) mais j ai constate que vous aviez aide a la resolution d un cas similaire.


Resume du probleme:

Au sein d´un fichier excel, je souhaite regrouper des donnees venant de plusieurs pages, dans 1 page "Base" (recuperation des donnees avec activation et/ou mis a jours de la liste depuis un bouton module par exemple...)

- Les donnees viennent de 10 pages (Quiz 1, ....,Quiz 10) faisant chaqun 2000 lignes, et qui sont mis a jours regulierement...

- De plus, cette page "Base" recevra les informations provenant des colonnes si condition sur "YES" (present sur chaque colonne "agreement" de chaque Quiz)

1) "lastname" ;
2) "firstname" ;
3) "birthday";
4) "email";
5) "city";
6)"Q1"; 7)"Q2"; 8)"Q3";
9) "Assign a date" 10) provenance du Quiz

....de ces differents Quiz, si possible avec la possibilite de trier les donnees.


J ai deja commence a reflechir a un code ( present sur le fichier excel, exluant les pages non concernees et mis a jours depuis un bouton module)
mais mes notions VB sont tres limitees, ce qui explique pourquoi je sollicite votre aide ...si vous acceptez bien sur !

En piece jointe, voici mon fichier excel.

Cijoint.fr - Service gratuit de dépôt de fichiers


Merci d avance a tous les membres (a la lecture de vos messages, ca fait plaisir de voir autant de gens sympas et devoue !) et vraiment desole pour ce derangement

Cordialement,

Pierre


nb: Je m`excuse pour les accens ( clavier suedois pas tres pratique ! ):)
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Comment regrouper des donnees provenant de plusieurs pages avec condition

Bonjour Pierrot, bonjour le forum,

Je te propose la macro suivante :

Code:
Public Sub recup()
Dim sh As Worksheet 'déclare la variable sh (SHeet)
Dim cel As Range 'déclare la varialbe cel (CELlule)
Dim dest As Range 'déclare la variable dest (DESTination)
Dim li As Integer 'déclare la variable li
For Each sh In Sheets 'boucle 1 : sur tous les onglets du classeur
    If Left(sh.Name, 5) = "Quiz " Then 'condition 1 : si le nom de longlet commence par "Quiz "
        For Each cel In sh.Range("W2:W" & sh.Range("W65536").End(xlUp).Row) 'boucle 2 : sur toutes les cellules éditées de la colonne W
            If UCase(cel.Value) = "YES" Then 'condition 2 : si le texte majuscule de la cellule est "YES" (accepte donc "yes" et/ou "Yes" et/ou "YES")
                Set dest = Sheets("Base").Range("B65536").End(xlUp).Offset(1, 0) 'définit la variable dest
                li = cel.Row
                dest.Value = sh.Cells(li, 11)
                dest.Offset(0, 1) = sh.Cells(li, 10)
                dest.Offset(0, 2) = sh.Cells(li, 12)
                dest.Offset(0, 3) = sh.Cells(li, 13)
                dest.Offset(0, 4) = sh.Cells(li, 14)
                dest.Offset(0, 5) = sh.Cells(li, 17)
                dest.Offset(0, 6) = sh.Cells(li, 19)
                dest.Offset(0, 7) = sh.Cells(li, 20)
                dest.Offset(0, 8) = sh.Cells(li, 21)
                dest.Offset(0, 9) = sh.Cells(li, 22)
                'je n'ai pas trouvé à quoi "QUIZ" correspond ???
            End If 'fin de la condition 2
        Next cel 'prochaine cellule éditée de la boucle 2
    End If 'fin de la condition 1
Next sh 'prochain onglet de la boucle 1
End Sub

Je n'ai pas compris où tu récupérais la dernière donnée "Quiz"... (dernière colonne de l'onglet "Base".
 

Discussions similaires

Statistiques des forums

Discussions
312 219
Messages
2 086 369
Membres
103 198
dernier inscrit
CACCIATORE