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 :

derniers éléments range


Sujet :

Macros et VBA Excel

  1. #1
    Membre très actif
    Homme Profil pro
    Analyste programmeur
    Inscrit en
    Mai 2014
    Messages
    393
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Analyste programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 393
    Par défaut derniers éléments range
    Bonjour à tous,

    Alors voilà, d'habitude j'y arrive plutôt bien mais là je galère depuis quelques heures à trouver une solution.

    J'ai une plage de données totalement aléatoire (ça peut être une cellule quelconque, une ligne entière, une colonne entière, la moitié d'une ligne, toute la feuille ou encore la plage C45:F956), bref vous l'aurez compris, totalement aléatoire.

    Mon problème c'est que j'ai besoin de connaître la ligne contenant une cellule non vide, ainsi que la dernière colonne contenant une cellule non vide.

    J'ai actuellement ce code, et dans la mesure du possible, un peu d'aide serait la bienvenue
    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
     
    public sub maxs(plage as string)
        Dim i As Long maxLignes As Long, maxColonnes As Long, temp As Long
        Set rng = Range(plage)
        maxLignes = 0
        maxColonnes = 0
        For i = 1 To rng.Columns.Count
            temp = rng.Range(rng.Rows.Count, i).End(xlUp).Row
            If temp > maxLignes Then maxLignes = temp
        Next i
        For i = 1 To rng.Rows.Count
            temp = rng.Range(rng.Rows.Count, i).End(xlToLeft).Column
            If temp > maxLignes Then maxLignes = temp
        Next i
    end sub
    Pour la petite question, l'erreur actuelle vient des lignes suivantes (même erreur) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    temp = rng.Range(rng.Rows.Count, i).End(xlUp).Row
    Il semblerait que ce soit à cause de l'utilisation du end. Pour plus de précision, il s'agit de l'erreur 1004 : Erreur définie par l'application ou par l'objet.

    Merci d'avance

  2. #2
    Membre Expert Avatar de Thautheme
    Homme Profil pro
    salarié
    Inscrit en
    Août 2014
    Messages
    1 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 1 373
    Par défaut
    Bonjour Jeanmidudu, bonjour le forum,

    Citation Envoyé par jeanmidudu Voir le message
    Mon problème c'est que j'ai besoin de connaître la ligne contenant une cellule non vide, ainsi que la dernière colonne contenant une cellule non vide.

    - tu veux dire la PREMIÈRE ou la DERNIÈRE ligne, contenant une cellule non vide ?
    - Comment est définie ta plage au départ ?

  3. #3
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    Bonjour,

    en passant je vois déjà un problème de logique entre les lignes de code n°11 & 12 :
    en ligne 11 la variable i pointe une ligne et en ligne 12 cette variable est utilisée comme colonne !

    Sinon une boucle ne s'avère même pas nécessaire via la méthode Range.Find, voire peut-être via la méthode SpecialCells


    _________________________________________________________________________________________________________
    Je suis Paris, Charlie, Bruxelles, …

  4. #4
    Membre très actif
    Homme Profil pro
    Analyste programmeur
    Inscrit en
    Mai 2014
    Messages
    393
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Analyste programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 393
    Par défaut
    J'ai besoin de connaître la dernière ligne non vide (désolé pour le mot manquant)
    Et voilà le code avec la petite correction (mais qui ne change rien)
    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
     
    public sub maxs(plage as string)
        Dim i As Long maxLignes As Long, maxColonnes As Long, temp As Long
        Set rng = Range(plage)
        maxLignes = 0
        maxColonnes = 0
        For i = 1 To rng.Columns.Count
            temp = rng.Range(rng.Rows.Count, i).End(xlUp).Row
            If temp > maxLignes Then maxLignes = temp
        Next i
        For i = 1 To rng.Rows.Count
            temp = rng.Range(i, rng.Columns.Count).End(xlToLeft).Column
            If temp > maxLignes Then maxLignes = temp
        Next i
    end sub

  5. #5
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    Cela change déjà : il n'y a plus de message d'erreur !

    Sinon en persistant dans une boucle inutile (pourquoi deux boucles ?! Inutile via la méthode Range.Find …),
    la logique est de boucler par colonne, de voir son numéro de dernière ligne non vide
    et de le conserver s'il est supérieur à la variable utilisée pour stocker ce numéro de dernière ligne …

    A noter la propriété End - entre autres - ne fonctionne pas bien s'il y a des formules dans les cellules
    renvoyant une valeur vide (ou pour les cellules vides formatées ou ayant été utilisées même si elles sont vides)

    après la dernière cellule non vide : dans ces cas seule la méthode Find est fiable comme expliqué dans la
    ou encore parmi les discussions de ce forum comme par exemple celle-ci

  6. #6
    Membre très actif
    Homme Profil pro
    Analyste programmeur
    Inscrit en
    Mai 2014
    Messages
    393
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Analyste programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 393
    Par défaut
    Pour ma part, j'ai toujours le même message d'erreur ligne 8 puis ligne 12.

    Ensuite, comme je l'ai précisé, il y a 2 boucles car j'ai besoin de connaître la dernière cellule non vide pour déterminer la ligne maximale, mais aussi la colonne maximale (donc 2 boucles, une pour la ligne, une pour la colonne). Les deux boucles sont donc nécessaires, une pour les lignes, une pour les colonnes.

    J'ai également essayé la méthode find, mais étant donné que j'ai des cellules avec des erreurs, celle-ci me retourne une erreur en passant sur une cellule contenant une erreur.

    Je ne savais pas que end posait problème avec des formules, et c'est un problème ici, car les cellules peuvent être vides, contenir des formules (dont des formules qui retournent des erreurs), des dates, du texte, ... bref absolument tous les types de données possibles.

    Donc je suis pour l'utilisation de la méthode find, mais comment lui faire prendre en compte les cellules contenant des erreurs?

  7. #7
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut



    Joindre un classeur enregistré en .xlsx (sans code) en précisant les résultats attendus,
    il y en aura certainement un trouvant une solution …

  8. #8
    Membre très actif
    Homme Profil pro
    Analyste programmeur
    Inscrit en
    Mai 2014
    Messages
    393
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Analyste programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 393
    Par défaut
    Je n'ai pas compris ton dernier message.

  9. #9
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut
    bonsoir
    sur ton model il y a meprise comme te l'a dis Marc mais visiblement t'a toujours pas compris tu confond ligne et colonnes

    ta sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public sub maxs(plage as string)
        Dim i As Long maxLignes As Long, maxColonnes As Long, temp As Long
        Set rng = Range(plage)    maxLignes = 0
        maxColonnes = 0
        For i = 1 To rng.Columns.Count
            temp = rng.Range(rng.Rows.Count, i).End(xlUp).Row'te donne la derniere ligne et non colonne 
            If temp > maxLignes Then maxLignes = temp
        Next i
        For i = 1 To rng.Rows.Count
            temp = rng.Range(i, rng.Columns.Count).End(xlToLeft).Column
            If temp > maxLignes Then maxLignes = temp
        Next i
    end sub
    perso j'utiliserait même pas find
    puisque ton désir d'après ce que je comprend de ta macro c'est trouver la dernière ligne et dernière colonne et comparer avec maxlignes

    tu n'a besoins de rien pour ca
    exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Set plage = Range("g4:v21")
    maxcolonnes = plage.Columns.Count + plage.Column
    maxlignes = plage.Rows.Count + plage.Row
    petite correction au cas ou ta plage cmmence en ligne 1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Set plage = Range("g1:v21")
    maxcolonnes = plage.Columns.Count + plage.Column
    maxlignes = plage.Rows.Count + IIf(plage.Row > 1, plage.Row - 1, 0)
    MsgBox maxlignes & "  " & maxcolonnes
    parti de la on peut faire comme suit aussi
    regarde bien comment je capte la cellule basse a droite de la plage
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Set plage = Range("g1:v21")
     Set celapres = plage.Offset(plage.Rows.Count, plage.Columns.Count).Cells(1).Offset(-1, 0)
    MsgBox "maxlignes= " & celapres.Row & "  maxcolonnes= " & celapres.Column
    Bonne soirée
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  10. #10
    Membre très actif
    Homme Profil pro
    Analyste programmeur
    Inscrit en
    Mai 2014
    Messages
    393
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Analyste programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 393
    Par défaut
    @PatrickToulon

    A propos du post #9 : C'est vrai, correction du dernier élément et petite précision, c'est une partie du code complet.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    sub maxs(plage as string)
        Dim i As Long maxLignes As Long, maxColonnes As Long, temp As Long
        Set rng = Range(plage)    maxLignes = 0
        maxColonnes = 0
        For i = 1 To rng.Columns.Count
            temp = rng.Range(rng.Rows.Count, i).End(xlUp).Row'te donne la derniere ligne et non colonne 
            If temp > maxLignes Then maxLignes = temp
        Next i
        For i = 1 To rng.Rows.Count
            temp = rng.Range(i, rng.Columns.Count).End(xlToLeft).Column
            If temp > maxColonnes Then maxColonnes = temp
        Next i
    end sub
    Ensuite mon problème n'est pas de comparer, mais seulement de récupérer (j'ai des dizaines de traitement ensuite). Le fait est que la plage de données est totalement variable, et on imagine donc bien que sur une plage G5945 (par exemple), la ligne 9 ne s'arrête pas à la même colonne que la 50 (par exemple). Idem pour les colonnes. Mon but est donc de trouver le max. Pour être sûr que tout le monde comprenne bien :
    Nom : capture.jpg.png
Affichages : 430
Taille : 45,4 Ko
    Ici la plage est B2: P27 et maxLignes doit contenir 20 et maxColonnes doit contenir 9. Je précise

    Et donc jusqu'ici, aucune proposition ne convient à mon problème =/

  11. #11
    Membre Expert Avatar de Thautheme
    Homme Profil pro
    salarié
    Inscrit en
    Août 2014
    Messages
    1 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 1 373
    Par défaut
    Bonsoir le fil, bonsoir le forum,

    Peut-être comme ça :

    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
    Sub Macro1()
    Dim CEL As Range
    Dim MLi As Integer
    Dim MCol As Integer
     
    With Selection.SpecialCells(xlCellTypeConstants)
        For Each CEL In .Rows
            If CEL.Column > MCol Then MCol = CEL.Column
        Next CEL
        For Each CEL In .Columns
            If CEL.Row > MLi Then MLi = CEL.Row
        Next CEL
        MsgBox "Ligne : " & MLi & Chr(13) & "Colonne : " & MCol
    End With
    End Sub

  12. #12
    Membre Expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 266
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub test()
        maxs [B2:P27]
    End Sub
     
    Sub maxs(plage As Range)
        Dim maxLignes As Long, maxColonnes As Long
        maxLignes = plage.Find("*", , , , xlByRows, xlPrevious).Row - plage.Row + 1
        maxColonnes = plage.Find("*", , , , xlByColumns, xlPrevious).Column - plage.Column + 1
    End Sub
    eric

    PS : si il se peut que toute la plage soit vide il faut ajouter un test pour éviter l'erreur.

  13. #13
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut
    Citation Envoyé par jeanmidudu Voir le message
    Je n'ai pas compris ton dernier message.
    Si la proposition d'Eric ne fonctionne pas de ton côté, joindre alors un classeur enregistré en .xlsx …

  14. #14
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re
    si la proposition d'eric ou les mienne ne correspondent pas a ces attentes alors il a mal exprimé son besoins

    si boucler sur les colonnes pour trouver la colonne la plus basse et pareil pour les lignes alors les deux méthodes Eric/moi même font la chose
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  15. #15
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re
    Citation Envoyé par jeanmidudu Voir le message
    @PatrickToulon
    Ensuite mon problème n'est pas de comparer, mais seulement de récupérer (j'ai des dizaines de traitement ensuite). Le fait est que la plage de données est totalement variable, et on imagine donc bien que sur une plage G5945 (par exemple), la ligne 9 ne s'arrête pas à la même colonne que la 50 (par exemple). Idem pour les colonnes. Mon but est donc de trouver le max. Pour être sûr que tout le monde comprenne bien :Ici la plage est B2: P27 et maxLignes doit contenir 20 et maxColonnes doit contenir 9. Je précise Et donc jusqu'ici, aucune proposition ne convient à mon problème =/
    et ceci:
    Ici la plage est B2: P27 et maxLignes doit contenir 20 et maxColonnes doit contenir 9. Je précise
    est harchi faux de 2 a 27 y a toujours eu plus que 20 entre nous chez moins c'est plutôt:15 colonnes25
    ligne1 commence en ligne 2 et termine en 27 pour les colonnes même calcul même si des lignes ou colonnes ont des cellules vides

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Set plage = Range("d5:j21")' address selon ta capture d'écran 
     Setnextcell= plage.Offset(plage.Rows.Count, plage.Columns.Count).Cells(1).Offset(-1, 0)
    MsgBox "maxlignes= " & celapres.Row & "  maxcolonnes= " & celapres.Column
    la macro si dessus te donnera bien 21 pour les ligne et 10 pour les colonne ce qui est exact

    ou alors tu t'es mal exprimé au quel cas, plus de plage pour toi t'appris un coup de chaud
    je te cite :
    Mon problème c'est que j'ai besoin de connaître la ligne contenant une cellule non vide, ainsi que la dernière colonne contenant une cellule non vide.
    dans le cas de ta capture maxligne pourrait être selon la citation si dessus la cellule d5 et pour la colonne j14

    soit clair dans tes demandes !!!!
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  16. #16
    Membre très actif
    Homme Profil pro
    Analyste programmeur
    Inscrit en
    Mai 2014
    Messages
    393
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Analyste programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 393
    Par défaut
    Désolé si je me fais mal comprendre, mais je ne vois pas vraiment comment faire plus simple. (Excepté en évitant les oublis de mot, désolé Patrick :
    Mon problème c'est que j'ai besoin de connaître la dernière ligne contenant une cellule non vide, ainsi que la dernière colonne contenant une cellule non vide.
    )
    Autre correction à propos de mon propre texte :
    Ici la plage est B2: P2
    En reprenant l'image au-dessus :
    On a une plage de données B2: P26 sélectionnée.
    Cette plage contient bien 25 lignes et 15 colonnes (sommes-nous tous d'accord?)

    Mon but final est de trouver au sein de cette plage (et donc sans tenir compte de la feuille), le numéro de la dernière ligne contenant une cellule non vide, idem pour les colonnes.

    Ainsi, avec cet exemple :
    - maxLignes doit contenir 20. Pourquoi? Parce que parmi les 25 lignes de la plage de données, c'est dans la 20ème ligne que se trouve la dernière cellule non vide.
    - maxColonnes, de la même manière, doit contenir 9. Pourquoi? Parce que parmi les 15 colonnes de la plage de données, c'est dans la 9ème ligne que se trouve la dernière cellule non vide.

    Ce pourquoi je m'étais mal exprimé était peut-être le fait que l'on ne tienne pas compte de la feuille, mais bien seulement de la plage de données. Ainsi le début de la plage de données est la ligne 1, colonne 1.

    Par contre, merci à Eriic pour sa solution, qui fonctionne parfaitement! Et par la même occasion, je ne sais pas pourquoi la méthode cette fois ne plante pas sur les erreurs (probablement une erreur de ma part lors de mes premiers essais).

    @PatrickToulon
    plus de plage pour toi t'appris un coup de chaud
    En fait ça serait plutôt l'inverse, parce que le travail et la flotte tous les jours en ville c'est vraiment pas génial. Je ne serais pas contre quelques vacances
    Tu devrais en profiter également :
    les mienneS ne correspondent pas a ces attentes alors il a mal exprimé son besoins
    chez moins c'est plutôt:15 colonnes25
    si dessus te donnera bien 21 pour les ligneS et 10 pour les colonneS
    pour toi t'appris un coup de chaud
    Et par la même occasion, ton code ne fonctionne malheureusement pas malgré la correction du nom de variable :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Set plage = Range("d5:j21")' address selon ta capture d'écran 
    Set nextcell= plage.Offset(plage.Rows.Count, plage.Columns.Count).Cells(1).Offset(-1, 0)
    MsgBox "maxlignes= " & celapres.Row & "  maxcolonnes= " & celapres.Column
    Ton code plante à la ligne set nextcell = ...... (Erreur 1004 définie par l'application ou par l'objet)

    Tout de même, merci beaucoup pour le temps passé dessus (malgré mes erreurs d'inattention et ma façon d'exprimer mon problème)

  17. #17
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re
    d'accords maintenant on a compris tu cherche pas le n° ligne/colonne mais leur index par rapport a la plage même

    comme ca c'est plus clair

    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
    Sub testfind()
    Set plage = Worksheets(1).Range("$B$2:$I$21")
    With plage
        Set c = .Find("*", LookIn:=xlValues)
        If Not c Is Nothing Then
        one = c.Address
            Do
               If c.Row > ro Then ro = c.Row: Set celbasse = c
               If c.Column > col Then col = c.Column: Set celldroite = c
               Set c = .FindNext(c)
            Loop While Not c Is Nothing And c.Address <> one
        End If
    End With
    MsgBox "n°ligne : " & celbasse.Row - plage.Row + 1 & vbCrLf & "n°colonne : " & celldroite.Column - plage.Column + 1
    End Sub
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  18. #18
    Membre très actif
    Homme Profil pro
    Analyste programmeur
    Inscrit en
    Mai 2014
    Messages
    393
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Analyste programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 393
    Par défaut
    Ah oui c'est vrai que là c'est expliquer beaucoup plus simplement et plus facile à comprendre

    En tout cas

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

Discussions similaires

  1. Copie dernier élément de chaque type, sur la feuille suivante
    Par baptbapt dans le forum Macros et VBA Excel
    Réponses: 33
    Dernier message: 26/07/2006, 09h59
  2. Réponses: 10
    Dernier message: 09/06/2006, 17h02
  3. [PL/SQL] Curseur - Récupération du dernier élément
    Par dupont166 dans le forum Oracle
    Réponses: 5
    Dernier message: 27/12/2005, 04h57
  4. for-each et dernier élément
    Par neptune dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 08/09/2005, 14h53
  5. Comment récupérer l'index du dernier élément inséré ?
    Par Didier100 dans le forum Bases de données
    Réponses: 4
    Dernier message: 15/07/2004, 22h41

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