vikvalesteam
Messages postés15Date d'inscriptionmercredi 20 mai 2009StatutMembreDernière intervention27 août 2013
-
1 juil. 2011 à 08:28
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018
-
1 juil. 2011 à 11:09
Bonjour a tous!
Tout d'abord, j'espere ne pas m'etre trompé de thème...
je suis a la recherche d'une ame charitable qui puisse m'aider...et qui soit meilleur que moi en VBA(ce qui n'est pas difficile)
je ne pense pas que ce que je demmande soit trop difficile, quoique...
j'ai a ma disposition 5 fichier appellés (team1, team2,...,team5)
chacun de ces fichiers dispose de plusieurs feuilles qui n'ont pas des noms predefinis...
sur chacune de ces feuilles, il y a des listes avec une colonne ou il y a des "yes" ou des "no".
ce que je veux faire, c'est dans un nouveau fichier qu'on appellera "Summury" mettre toutes les lignes qui possedent le champs "yes". ces lignes etant dans toutes les feuilles de tous les fichiers...
j'espere etre assez clair...
j'avais pensé faire une boucle "for i=1 to 5" qui passe les fichier les uns apres les autres dans laquelle on passe les feuilles les une apres les autres avec "for j=1 to nbfeuille"
(je crois qu'on peut avoir nbfeuille=worksheets.Count)
et donc dans cette derniere boucle, faire une sorte de copier un tri et de le coller par valeur a la suite de mon fichier "summary"
je ne sais pas si c'est vraiment faisable, mais je pense que ca devrait pas etre trop dur pour vous...en tout cas si vous avez une idee je suis preneur
merci de votre aide
A voir également:
Extraire les lignes par rapport a une ref dans un autre fichier
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 1 juil. 2011 à 10:03
Bonjour,
Nous n'allons pas tout te faire, mais te mettre (très largement) sur la voie.
Regarde :
Private Sub CommandButton1_Click()
Dim feuille As Worksheet, feuillegenerale As Worksheet, macolonne As String
Set feuillegenerale Worksheets("toto") '> definit ta destination
macolonne = "A" '===>> definit ta colonne où il y a des yes et des no
For Each feuille In Worksheets
If feuille.Name <> feuillegenerale.Name Then
copions feuille, feuillegenerale, macolonne
End If
Next
Exit Sub
End Sub
Private Sub copions(feuilledepart As Worksheet, feuilledesti As Worksheet, colonne As String)
Dim laplage As Range, C As Range
With feuilledepart
Set laplage = .Range(colonne & "1:" & colonne & .Range(colonne & "5000").End(xlUp).row)
For Each C In laplage
If C.Value = "yes" Then
MsgBox C.row ' juste pour comprendre . enlever ensuite
'..... ici tes instructions de copie vers feuilledesti
' que dois-tu copier ? ===>> la totalité de la ligne (entirerow)
' vers où dois-tu copier ? ===>> vers la dernière ligne remplie + 1 de feuilledesti
' A utiliser : méthode Copy avec paramètre destination
End If
Next
End With
End Sub
Ce bout de code, te montre en plus (si tu sais l'analyser) comment déterminer la dernière ligne remplie d'une feuille
Reste plus qu'à ... (très peu)
____________________
Utiliser le bouton "REPONSE ACCEPTEE" sur une réponse exacte facilite les recherches ultérieures d'autres forumeurs. PENSEZ-Y SVP
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 1 juil. 2011 à 11:09
Bien
Mais en te relisant, je vois que tes feuilles d'origine sont en plus réparties entre plusieurs classeurs.
Le principe est donc le même, mais à compléter du genre :
Dim classeur as workbook, feuille As Worksheet, feuillegenerale As Worksheet, macolonne As String
For Each classeur In Workbooks
' mais en "écartant" le classeur de destination
For each feuille in classeur.worksheets
....
Next
Next
et definir feuillegenerale ainsi (exemple)
set feuillegenerale = WorkBooks("nom_classeur_destination".Worksheets("nom_feuille-destination")
____________________
Utiliser le bouton "REPONSE ACCEPTEE" sur une réponse exacte facilite les recherches ultérieures d'autres forumeurs. PENSEZ-Y SVP