VBA Excel - selection de valeurs distinctes - VB/VBA/VBS - Programmation
Marsh Posté le 03-06-2008 à 09:33:57
Bonjour,
C'est possible en bouclant sur tes feuilles puis sur les lignes de la colonne contenant les contrats (si c'est le cas) puis en recherchant chaque pour contrat s'il existe dans la feuille de total et l'ajouter en fin de liste si ce n'est pas le cas.
Ce que tu veux, c'est juste une liste de contrat ? pas de cumul de valeur ou autre ...
Marsh Posté le 03-06-2008 à 10:26:52
Salut, qqs façon d'y parvenir
Sur feuille récapitulative Données / Filtre élaboré avec extraction sans doublons
via une collection avec une clé
via http://www.mdf-xlpages.com/modules [...] d=2&lid=11
Marsh Posté le 03-06-2008 à 14:27:53
Bonjour et merci pour ta réponse,
oui c'est bien juste une liste de contrats que je cherche à créer dans un premier temps. L'idée que tu me proposes est bien celle que j'avais en tête, sauf que... je ne sais pas la mettre en oeuvre... (je débute!)
DamienCYS a écrit : Bonjour, |
Marsh Posté le 03-06-2008 à 14:28:32
Bonjour,
Merci pour ca, je vais regarder de ce coté
Bonne journée
kiki29 a écrit : Salut, qqs façon d'y parvenir |
Marsh Posté le 03-06-2008 à 16:33:54
sinon
voici le code
Sub test()
Dim nombredelignestotal, nombresdefeuilles As Integer
nombresdefeuilles = Sheets.Count
Worksheets.Add Count:=1, after:=Sheets(nombresdefeuilles)
nombredelignestotal = 0
For i = 1 To nombresdefeuilles Step 1
'en imaginant que tes donnees sont dans la colonne A
Sheets(i).Select
nbredelignes = Sheets(i).Range("A6555" ).End(xlUp).Row
Range(Cells(1, 1), Cells(nbredelignes, 1)).Select
Selection.Copy
Sheets(nombresdefeuilles + 1).Select
Cells(nombredelignetotal + 1, 1).Select
ActiveSheet.Paste
nombredelignetotal = nombredelignetotal + nbredelignes
Next
Sheets(nombresdefeuilles + 1).Select
nblign = Sheets(nombresdefeuilles + 1).Range("A6555" ).End(xlUp).Row
Range("A1:A" & nblign).Select
Selection.Sort Key1:=Range("A1" ), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
For i = nblign To 2 Step -1
If Cells(i, 1) = Cells(i - 1, 1) Then
Rows(i).Select
Selection.Delete Shift:=xlUp
End If
Next
End Sub
Marsh Posté le 03-06-2008 à 22:35:30
Je l'ai adaptée, ca marche parfaitement, merci beaucoup!!
Merci à tous pour votre aide,
Bonne soirée
86vomito33 a écrit : sinon |
Marsh Posté le 02-06-2008 à 22:34:47
Bonjour à tous,
Je fais mes premiers pas avec VBA et je suis confrontée au problème suivant:
- j'ai un fichier de données mensuelles (avec un onglet de données par mois)
- les différents onglets regroupent des contrats, mais un contrat A peut figurer sur le fichier de janvier et pas sur celui de juin, ou au contraire un contrat B peut n'apparaître qu'en juillet
Ce que je cherche à faire:
- Créer une feuille supplémentaire qui me permette d'avoir une liste exhaustive des contrats apparaissant sur tous les onglets mensuels, mais sans les doublons.
- Ce que j'ai fait jusqu'ici: j'ai copié les données des différents onglets sur une feuille feuille puis supprimé les doublons. Problême: j'ai beaucoup trop de données! (environ 6000 par onglet)
Y aurait-il un moyen de coder cela avec vba? (sachant que, problème supplémentaire, je n'ai pas toujours le même nombre d'onglets de données: ca peut être du janvier à mars, comme du février à août...)
Je vous remercie d'avance pour votre aide précieuse!
Bonne soirée,
Lilly