Problème avec boucle FOR

Bonjour à tous,

Bon je débute en VBA, ça fait quelques jours que je m'y suis mis J'aimerais que vous m'aidiez si possible avec une boucle qui me bloque.

Je vous explique ce que je veux que mon code fasse:

J'ai une FEUILLE A et une FEUILLE B, avec pour la première une colonne A (qui contient noms et prénoms comme ça DUPUIS Robert) et une colonne B avec la même liste sauf que pour certains noms il y a écrit "Inconnu". Pour la deuxième feuille, elle est vierge.

Je veux donc que mon code parcoure la colonne B de la FEUILLE A et à chaque fois qu'il tombe sur une ligne où il y a écrit "Inconnu", il copie la case correspondante de la colonne A, sur la FEUILLE B. J'aimerais aussi qu'il n'y ait pas de récurrence de nom prénom. Exemple :

FEUILLE A

A

B

DUPUIS RobertDUPUIS Robert
DUPUIS RobertDUPUIS Robert
ALAN JulieInconnu

DUMAS Bertrand

DUMAS Bertrand
ALAN JulieInconnu
BONBON CharlotteInconnu

PEREZ Marie

PEREZ Marie

Du coup, dans le FEUILLE B, je voudrais que ça retourne :

A
ALAN Julie
BONBON Charlotte

Voici mon code, je ne sais pas si j'y suis presque ou si je suis loin du compte :

Sub INCONNU()

  Dim plage As Range
  Dim i As Integer
  Dim j As Integer
  Dim col As Integer
  Dim cible As String

  cible = "Inconnu"
  i = 1
  j = 1
  col = 14

  For i = 1 To i <= 2000
  If Worksheets("FEUILLEA").Cells(i, col) <> cible Then
    i = i + 1
  ElseIf Worksheets("FEUILLEA").Cells(i, col).Value = cible Then
    Worksheets("FEUILLEB").Cells(j, 1) = Worksheets("FEUILLEA").Cells(i, 8).Value
    j = j + 1
    End If
    Next
End Sub

Je vous remercie par avance !!!

bonjour,

proposition d'adaptation de ton code (non testé)

Sub INCONNU()

    Dim plage As Range
    Dim i As Integer
    Dim j As Integer
    Dim col As Integer
    Dim cible As String

    cible = "Inconnu"
    i = 1
    j = 1
    col = 14
    For i = 1 To 2000
        If Worksheets("FEUILLEA").Cells(i, col).Value = cible Then
            Worksheets("FEUILLEB").Cells(j, 1) = Worksheets("FEUILLEA").Cells(i, 8).Value
            j = j + 1
        End If
    Next
End Sub

tu pourrais encore peaufiner en remplaçant 2000 parle nombre réel de lignes présentes dans ton classeur.

Super ! Merci h2so4, ça marche ! Mais j'ai toujours le problème de la récurrence que je n'arrive pas à résoudre... Sur l'exemple précédent, j'ai comme résultat sur la FEUILLE B :

A
ALAN Julie
ALAN Julie
BONBON Charlotte

Julie se répète deux fois... je ne sais pas comment je pourrais résoudre ce problème de récurrence

Bonjour,

oups désolé, j'avais vu la demande mais j'ai oublié de la traiter.

Sub INCONNU()

    Dim dl As Long
    Dim i As Long
    Dim j As Long
    Dim col As Integer
    Dim cible As String

    cible = "Inconnu"
    i = 1
    j = 1
    col = 14
    dl = Worksheets("FEUILLEA").Cells(Rows.Count, 8).End(xlUp).Row
    For i = 1 To dl
        If Worksheets("FEUILLEA").Cells(i, col).Value = cible Then
            Worksheets("FEUILLEB").Cells(j, 1).Value = Worksheets("FEUILLEA").Cells(i, 8).Value
            j = j + 1
        End If
    Next
    Worksheets("FEUILLEB").Range("$A$1:$A$" & j).RemoveDuplicates Columns:=1, Header:=xlNo
End Sub
Rechercher des sujets similaires à "probleme boucle"