Excel VBA création tableau sous conditions
Résolu/Fermé
Dario
-
19 janv. 2012 à 14:05
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 20 janv. 2012 à 08:28
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 20 janv. 2012 à 08:28
A voir également:
- Excel VBA création tableau sous conditions
- Trier tableau excel - Guide
- Tableau word - Guide
- Liste déroulante excel - Guide
- Tableau ascii - Guide
- Imprimer tableau excel sur une page - Guide
2 réponses
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 758
19 janv. 2012 à 14:56
19 janv. 2012 à 14:56
Bonjour,
Il te faut :
1- parcourir toutes les feuilles du classeur:
1a- exclure la feuille nommée "Entretien" :
ou plus simplement :
2- on parcourt les colonnes C (toujours sur chaque feuille...)
2a- en déterminant au préalable la dernière ligne remplie de la colonne C :
2b- en bouclant sur toutes les lignes de cette colonne C, si on trouve "HS" alors...
3- Si on a "HS" en C on copie colle les colonnes A, B et D en feuille "Entretien", colonnes A, B, C, dans la première ligne vide
3a- première ligne vide colonne A feuille Entretien :
Ce qui nous donne un code :
Si beaucoup de données (+ de 5000 / feuille), dis le ...
Il te faut :
1- parcourir toutes les feuilles du classeur:
Dim Wsh As WorkSheet For Each Wsh In ThisWorkBook.WorkSheets
1a- exclure la feuille nommée "Entretien" :
If Wsh.Name = "Entretien" Then 'on fait rien Else 'ici le code de "on fait quelque chose"
ou plus simplement :
If Wsh.Name <> "Entretien" Then
2- on parcourt les colonnes C (toujours sur chaque feuille...)
2a- en déterminant au préalable la dernière ligne remplie de la colonne C :
Dim DernLigne As Long DernLigne = Wsh.Range("C" & Rows.Count).End(xlUp).Row
2b- en bouclant sur toutes les lignes de cette colonne C, si on trouve "HS" alors...
Dim Lig As Long For Lig = 2 To DernLigne If Wsh.Cells(Lig, 3).Value = "HS" Then 'blabla End If Next
3- Si on a "HS" en C on copie colle les colonnes A, B et D en feuille "Entretien", colonnes A, B, C, dans la première ligne vide
3a- première ligne vide colonne A feuille Entretien :
Dim LigVide As Long With Sheets("Entretien") LigVide = .Range("A" & Rows.Count).End(xlUp).Offset(1, 0).Row End With Wsh.Range("A" & Lig).Copy Sheets("Entretien").Range("A" & LigVide) Wsh.Range("B" & Lig).Copy Sheets("Entretien").Range("B" & LigVide) Wsh.Range("D" & Lig).Copy Sheets("Entretien").Range("C" & LigVide)
Ce qui nous donne un code :
Dim Wsh As Worksheet Dim DernLigne As Long Dim Lig As Long Dim LigVide As Long For Each Wsh In ThisWorkbook.Worksheets If Wsh.Name <> "Entretien" Then DernLigne = Wsh.Range("C" & Rows.Count).End(xlUp).Row For Lig = 2 To DernLigne If Wsh.Cells(Lig, 3).Value = "HS" Then With Sheets("Entretien") LigVide = .Range("A" & Rows.Count).End(xlUp).Offset(1, 0).Row End With Wsh.Range("A" & Lig).Copy Sheets("Entretien").Range("A" & LigVide) Wsh.Range("B" & Lig).Copy Sheets("Entretien").Range("B" & LigVide) Wsh.Range("D" & Lig).Copy Sheets("Entretien").Range("C" & LigVide) End If Next Lig End If Next Wsh
Si beaucoup de données (+ de 5000 / feuille), dis le ...
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 758
20 janv. 2012 à 08:28
20 janv. 2012 à 08:28
Bonjour,
Pour cela, dans le code donné plus haut, remplace :
par :
Tout simplement, au lieu de copier la cellule, on dit que les valeurs sont égales...
Pour cela, dans le code donné plus haut, remplace :
Wsh.Range("D" & Lig).Copy Sheets("Entretien").Range("C" & LigVide)
par :
Sheets("Entretien").Range("C" & LigVide) = Wsh.Range("D" & Lig).Value
Tout simplement, au lieu de copier la cellule, on dit que les valeurs sont égales...
19 janv. 2012 à 16:09
merci beaucoup pour ces indications.
Je vais essayer et revenir vers le forum pour mon verdict (réussi ou problèmes).
Mes feuilles font maximum 100 lignes et j'ai 6 feuilles à synthétiser.
Encore merci!
Cdlt.
19 janv. 2012 à 17:53
Grand merci pour ton aide précieuse.
19 janv. 2012 à 18:26
J'ai essayé en ajoutant .Value et une égalité mais ça ne fonctionne pas...
Merci.