IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

récupérer le N° de ligne de la dernière occurrence d'un doublon en vba


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Inscrit en
    Décembre 2009
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 35
    Points : 35
    Points
    35
    Par défaut récupérer le N° de ligne de la dernière occurrence d'un doublon en vba
    Bonjour à toutes et à tous

    je ne sais pas si je suis au bon endroit

    bon je me lance
    je voudrai savoir comment récupérer le N° de ligne de la dernière occurrence d'un doublon

    je précise :

    sur la colonne A par exemple, j'ai

    A1=test1

    A2=test1

    A3=test1

    A4=test1

    A5=test1

    A5=test1

    A6=test1

    A7=test1

    A8=test1

    A9=test1

    A10=test1 ==>dans la fonction je dois récupérer :10 pour l'occurence test1

    A11=test3

    A12=test3

    A13=test3

    A14=test3

    A15=test3 ==>dans la fonction je dois récupérer :15 pour l'occurence test3

    A16=test2

    A17=test2

    A18=test2

    A19=test2

    A20=test2 ==>dans la fonction je dois récupérer :20 pour l'occurence test2



    la fonction ci dessous me permet de connaitre le nombre de fois que revient une occurence dans la colonne,

    mais je n'arrive pas à récupérer le n° de ligne de la dernière occurrence

    si quelqu'un voit ou se trouve mon erreur dans le code si dessous

    ou une autre proposition, je suis prenneur, et je lui serai infiniment reconnaissant.


    merci d'avance et bonne fête de fin d'année

    à savoir 'MsgBox Item.Row, me renvoie la ligne de chaque occurence


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    Function total()
     
    Dim Spinner As Integer
     
    Dim totaligne As Integer
     
    Dim i As Integer
     
    Dim tabl() As Integer
     
    Spinner = 0
     
     
     
    Set plageCherche = Worksheets("feuil1").Range("H2:H" & totalignes(Worksheets("feuil1").Range("B65536")))
     
    ReDim tabl(Worksheets("feuil40").Range("M1").Value)
     
    For i = 1 To Worksheets("feuil40").Range("M1").Value
     
    ValCherchee = Worksheets("feuil40").Range("M" & i + 1).Text
     
    For Each Item In plageCherche
     
    If (StrComp(Item.Value, ValCherchee, vbTextCompare) = 0) Then Spinner = Spinner + 1
     
    'MsgBox Item.Row
     
    Next Item
     
     
     
    tabl(i) = CStr(Spinner)
     
     
     
     
     
    Spinner = 0
     
    Next i
     
    total = tabl
     
    End Function

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Points : 2 443
    Points
    2 443
    Par défaut
    Salut RICXLS et le forum
    Pour récupérer le nombre de doublon, j'utilise :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SOMMEPROD(($A$1:$A$20=A1)*1)
    Validation normale. Ça te donnera le nombre de fois où la valeur en A1 existe dans la plage A1:A20.
    Pour la dernière ligne contenant la valeur en A1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =MAX(($A$1:$A$20=A1)*LIGNE($A$1:$A$20))
    Validation en fonction matricielle (Ctrl+Shift+Enter).
    Bonne et heureuse Année 2010
    A+

  3. #3
    Nouveau membre du Club
    Inscrit en
    Décembre 2009
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 35
    Points : 35
    Points
    35
    Par défaut
    Citation Envoyé par Gorfael Voir le message
    Salut RICXLS et le forum
    Pour récupérer le nombre de doublon, j'utilise :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SOMMEPROD(($A$1:$A$20=A1)*1)
    Validation normale. Ça te donnera le nombre de fois où la valeur en A1 existe dans la plage A1:A20.
    Pour la dernière ligne contenant la valeur en A1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =MAX(($A$1:$A$20=A1)*LIGNE($A$1:$A$20))
    Validation en fonction matricielle (Ctrl+Shift+Enter).
    Bonne et heureuse Année 2010
    A+
    merci bien je vais tester cela
    bonne et heureuse année à toi

  4. #4
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Bonsoir et meilleurs voeux!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Public Function TabRechOcc() As Variant
    Dim LastLig As Long, i As Long, k As Integer
    Dim Tablo() As Variant
     
    LastLig = Cells(Rows.Count, 1).End(xlUp).Row
    For i = 1 To LastLig
        If Range("A" & i + 1).Value <> Range("A" & i).Value Then
            ReDim Preserve Tablo(2, k + 1)
            Tablo(0, k) = Range("A" & i).Value
            Tablo(1, k) = i
            k = k + 1
        End If
    Next i
    TabRechOcc= Tablo
    Erase Tablo
    End Function
    TabRechOcc est un tableau comportant les occurrences et leur dernière ligne.
    on récupère les données ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub tst()
    Range(Cells(1, 2), Cells(2, UBound(TabRechOcc(), 2))).Value = TabRechOcc()
    End Sub
    Edit:
    ou bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub tst()
    Range("B1:C" & UBound(TabRechOcc(), 2)).Value = Application.Transpose(TabRechOcc())
    End Sub
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  5. #5
    Nouveau membre du Club
    Inscrit en
    Décembre 2009
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 35
    Points : 35
    Points
    35
    Par défaut
    Citation Envoyé par mercatog Voir le message
    Bonsoir et meilleurs voeux!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Public Function TabRechOcc() As Variant
    Dim LastLig As Long, i As Long, k As Integer
    Dim Tablo() As Variant
     
    LastLig = Cells(Rows.Count, 1).End(xlUp).Row
    For i = 1 To LastLig
        If Range("A" & i + 1).Value <> Range("A" & i).Value Then
            ReDim Preserve Tablo(2, k + 1)
            Tablo(0, k) = Range("A" & i).Value
            Tablo(1, k) = i
            k = k + 1
        End If
    Next i
    TabRechOcc= Tablo
    Erase Tablo
    End Function
    TabRechOcc est un tableau comportant les occurrences et leur dernière ligne.
    on récupère les données ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub tst()
    Range(Cells(1, 2), Cells(2, UBound(Rech(), 2))).Value = Rech()
    End Sub
    simplement trop fort merci à toi et bonne et heureuse année plein de bonnes choses

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 17/08/2014, 15h20
  2. récupérer la valeur de clé de la dernière ligne insérée
    Par colombero dans le forum Langage SQL
    Réponses: 4
    Dernier message: 08/12/2006, 09h23
  3. Récupérer les N derniers lignes
    Par arsenik7 dans le forum Oracle
    Réponses: 8
    Dernier message: 12/05/2006, 13h35
  4. [javascript/dom] Récupérer le nombre de lignes d'un tableau
    Par LE NEINDRE dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 17/02/2006, 11h51
  5. Réponses: 2
    Dernier message: 25/10/2005, 10h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo