• Initiateur de la discussion Initiateur de la discussion Poussin
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Poussin

XLDnaute Occasionnel
Bonjour à tous

Je souhaite faire une boucle for qui parcourra tous les individus présents dans la première colonne malheureusement certains de ces individus sont présent à plusieurs reprises je voudrais donc savoir comment faire pour éviter les doublons.

Je vous remercie par avance pour votre aide.
 
Re : Boucle for en VBA

Bonjour Poussin, MJ,

Une proposition si la liste est de taille "raisonnable"
VB:
Sub rtrt()
    For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row
        b = True
        For j = 1 To i - 1
            If Cells(i, 1) = Cells(j, 1) Then
                b = False
                Exit For
            End If
        Next j
        If b = True Then
            'le traitement pour les individus validés
        End If
    Next i
End Sub

Cordialement

KD
 
Re : Boucle for en VBA

Bonjour à vous et merci pour vos réponses rapides !

Voici le fichier test pour mieux vous faire comprendre car ma base de données serait d'environ de 500 lignes donc ma liste n'est pas raisonnable je suppose.

J'arrive à mettre en place le tableau de l'onglet 5 pour une société en imposant le CurrentPage comme ceci :

Code:
ThisWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
    [Feuil3!A1].CurrentRegion.Address(, , xlR1C1, True)).CreatePivotTable _
    TableDestination:="Feuil4!R1C1", _
    TableName:="Mon TCD"
    
ActiveSheet.PivotTables("Mon TCD").AddFields
    With ActiveSheet.PivotTables("Mon TCD").PivotFields("Date")
        .Orientation = xlPageField
        .Position = 1
        .CurrentPage = "2008"
    End With
    With ActiveSheet.PivotTables("Mon TCD").PivotFields("Nom")
        .Orientation = xlPageField
        .Position = 1
        .CurrentPage = "SOCIETE X1"
    End With

Par contre maintenant je souhaiterais créer une boucle pour faire toutes les sociétés, j'ai mis un commentaire dans le Module 1. J'espère que vous me comprenez, n'hésitez pas à revenir vers moi pour toute question. JE vous remercie par avance pour votre aide.
 

Pièces jointes

Re : Boucle for en VBA

Re

Tu peux tester ce code:

Code:
Sub Copy_TCD_NOM()
    Cells(2, 1).Select
    With ActiveSheet.PivotTables("Mon TCD").PivotFields(ActiveCell.Text)
    Non_A_Voir = .PivotItems(1)
    .PivotItems(1).Visible = True
    For i = 2 To .PivotItems.Count
    valeur = .PivotItems(i)
        .PivotItems(valeur).Visible = False
      Next
    MsgBox Non_A_Voir
    Copyzone
    End With
    With ActiveSheet.PivotTables("Mon TCD").PivotFields(ActiveCell.Text)
    For j = 2 To .PivotItems.Count
    Non_A_Voir = .PivotItems(j)
    MsgBox Non_A_Voir
    .PivotItems(1).Visible = True
    For i = 2 To .PivotItems.Count
    valeur = .PivotItems(i)
        If valeur <> Non_A_Voir Then .PivotItems(valeur).Visible = True Else .PivotItems(i).Visible = False:
      Next
    .PivotItems(1).Visible = False
    Copyzone
    Next
     End With
 End Sub
 
Sub Copyzone()
NFAct = ActiveSheet.Name
    derl = Cells.Rows.Count
    derc = Cells.Columns.Count
    Range(Cells(1, 1), Cells(derl, derc)).Copy
        Sheets.Add
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
        Sheets(NFAct).Select
        Cells(2, 1).Select
  End Sub
 
Re : Boucle for en VBA

Merci beaucoup pour ta réponse mais je ne vois pas du tout comment l'insérer au sein de mon code. Pourrais-tu m'expliquer s'il te plaît les différentes parties de ton code afin que je réussisse son intégration.

Merci d'avance
 
Re : Boucle for en VBA

Merci beaucoup pour ta réponse. Malheureusement le problème qui se pose est la création d'onglet or je voudrais éviter d'en créer des nouveaux à chaque fois je veux seulement garder mes onglets 1,2,3,4 et 5. De plus il me faut associer le bon métier à chaque société pour éviter de récupérer des données vides.

Donc pour cela, j'ai pensé à la solution suivante :

Code:
metier = Range("Tableau[Metier]")(Range("Tableau[Nom]").Find(Nom, lookat:=xlwhole).Row-1)

Je te remercie par avance pour tes remarques et ton aide.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 agrandir la liste
Réponses
21
Affichages
545
  • Résolu(e)
Microsoft 365 problème
Réponses
19
Affichages
871
Réponses
7
Affichages
529
Réponses
2
Affichages
209
Réponses
11
Affichages
177
Retour