Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.
  • Initiateur de la discussion Initiateur de la discussion kllmoon
  • 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 !

kllmoon

XLDnaute Occasionnel
Bonjour le forum, j'ai un petit pépin avec range find. Voici mon code

Code:
Private Sub Worksheet_Activate()
Dim ws As Worksheet
Dim x As String
Dim rng As Range
Dim rngFind As Range
For Each ws In ActiveWorkbook.Worksheets
z = ws.Name
Set rng = Sheets(z).Range("C3")
Set rngFind = Sheets("Dossiers Actifs").Range("A4:A50").Find(rng)
If rngFind Is Nothing Then
    y = [COUNTA(a3:a50) + 3 ]
    Sheets("Dossiers Actifs").Range("A" & y).Value = rng
Else
 
    End If
Next
End Sub

Ce code fonctionne dans la mesure où mes valeurs en C3 sont transférées sur ma feuille dossiers actifs. Le seul hic c'est que même si cette valeur est déjà comprise sur la feuille Dossier Actif, elle est recopiée à la fine de la liste. Je me retrouve donc avec des entrées ajoutée en double, en triple.... à chaque exécution de cette macro.

Alors, comment faire pour que ça fonctionne?
 
Dernière édition:
Re : Range find

Salut kllmoon et le forum
Si la valeur en C3 n'est pas contenue dans "dossiers Actifs" entre A3 et A50, il ajoute la valeur du C3 à la fin de la liste.
Comme c'est une liste qu'on augmente, je suis parti du principe qu'elle commence en A3 et finie à la dernière ligne non vide de A.
Code:
Sub test()
Dim Ws As Worksheet
For Each Ws In ActiveWorkbook.Worksheets
    With Sheets("Dossiers Actifs")
        If Not (.Range(.[A4], .Cells(Rows.Count, "A").End(xlUp)).Find(Ws.[C3]) Is Nothing) Then _
                                          .Cells(Rows.Count, "A").End(xlUp)(2) = Ws.[C3]
    End With
Next
End Sub
Je ne l'ai pas testée.
A+
 
Re : Range find

bonsoir a tous

A tester

Code:
Private Sub Worksheet_Activate()
Dim Ws As Worksheet
For Each Ws In ActiveWorkbook.Worksheets
    With Sheets("Dossiers Actifs")
        If Application.WorksheetFunction.CountIf(.[A:A], Ws.[C3]) = 0 Then
           Range("A65536").End(xlUp).Offset(1, 0) = Ws.[C3]
        End If
    End With
Next
End Sub
 
- 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

Réponses
0
Affichages
663
Réponses
3
Affichages
1 K
Réponses
7
Affichages
871
A
  • Question Question
Réponses
3
Affichages
1 K
A
Réponses
7
Affichages
2 K
Réponses
4
Affichages
1 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…