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 :

Distinguer le nombre de plages non contiguës dans une feuille


Sujet :

Macros et VBA Excel

  1. #1
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 729
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 729
    Points : 28 555
    Points
    28 555
    Billets dans le blog
    53
    Par défaut Distinguer le nombre de plages non contiguës dans une feuille
    Bonjour,
    Lorsque l'on détermine une plage non contiguë comme par exemple shtDb_2.Range("A1:H8,I12:K19"), il est possible de parcourir ces plages grâce à la collection Areas.
    Ce que je cherche désespérément mais sans être certain que cela soit possible, c'est de pouvoir déterminer les plages non contiguës en me basant sur la propriété UsedRange
    Dans mon exemple, lorsque j'écris ShtDb_2.UsedRange j'obtiens comme adresse bien entendu $A$1:$K$19. Ce que je souhaiterais c'est obtenir $A$1:$H$8,$I$12:$K$19
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  2. #2
    Membre averti
    Inscrit en
    Août 2009
    Messages
    817
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 817
    Points : 314
    Points
    314
    Par défaut
    Bonjour Philippe,
    J'ai trouve ce lien qui peut t'être utile.
    Mais j'ai l'impression que le usedrange ne gere pas la discontinuité
    http:// http://www.globaliconnect.co...=79&Itemid=475

    Denis

  3. #3
    Membre éprouvé
    Homme Profil pro
    Programmeur analyste
    Inscrit en
    Février 2009
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur analyste
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2009
    Messages : 546
    Points : 1 116
    Points
    1 116
    Par défaut
    Bonjour,
    je sais, ce n'est pas ce que tu cherches, peut-être tu sais déjà.
    cela pourra peut-être t'aider


    pour sélectionner tableau individuelle

    ce code sélectionnera ton premier tableau
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ActiveSheet.UsedRange.Cells(1, 1).Select
    ActiveSheet.Cells(ActiveCell.Row, ActiveCell.Column).CurrentRegion.Select

    ce code sélectionnera ton 2e tableau
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ActiveSheet.UsedRange.Cells(ActiveSheet.UsedRange.Rows.Count, ActiveSheet.UsedRange.Columns.Count).Select
    ActiveSheet.Cells(ActiveCell.Row, ActiveCell.Column).CurrentRegion.Select

    mais pour les 2 en même temps reste à voir

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 729
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 729
    Points : 28 555
    Points
    28 555
    Billets dans le blog
    53
    Par défaut
    Bonjour Gnain,
    Merci pour ta réponse mais évidemment mon exemple portait sur deux plages et cela c'est relativement simple à gérer mais on pourrait avoir bien plus de plages.
    De plus même avec deux plages, si la seconde a sa dernière colonne qui se situe avant la dernière colonne de la première liste cela ne fonctionnera pas. (Exemple adresses $A$1:$H$5, $D$11:$F$18
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  5. #5
    Membre éprouvé
    Homme Profil pro
    Programmeur analyste
    Inscrit en
    Février 2009
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur analyste
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2009
    Messages : 546
    Points : 1 116
    Points
    1 116
    Par défaut
    Bonjour Philippe
    peut-être ceci t'intéressera

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim rng As Range
     
    Set rng = Cells
    rng.SpecialCells(xlCellTypeConstants).Select
    MsgBox Selection.Address

  6. #6
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 729
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 729
    Points : 28 555
    Points
    28 555
    Billets dans le blog
    53
    Par défaut
    Bonjour Gnain,
    Merci pour ta réponse mais j'ai également regardé du côté de la méthode SpecialCells mais évidemment dans plusieurs plages ont peut avoir des constantes et des formules avec les cellules visibles pas non plus parce-que parmi ces plages il peut y avoir des plages filtrées.

    [EDIT]
    J'avais pensé à utiliser le SpecialCells avec Constantes et Formules en combinant intégrées à UNION mais il peut y avoir des cellules vides dans ces plages et si on ajoute les cellules vides on revient à la plage UsedRange
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub Macro3()
     Dim rng As Range
     With shtTestAreas.UsedRange
      Set rng = Union(.SpecialCells(xlCellTypeConstants), .SpecialCells(xlCellTypeFormulas))
     End With
     Debug.Print rng.Address
    End Sub
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  7. #7
    Membre éprouvé
    Homme Profil pro
    Programmeur analyste
    Inscrit en
    Février 2009
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur analyste
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2009
    Messages : 546
    Points : 1 116
    Points
    1 116
    Par défaut
    Bonjour,
    comme ceci, les vides ne sont pas sélectionné

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim rng As Range
    Set rng = Cells
    On Error Resume Next
    Union(rng.SpecialCells(xlCellTypeConstants), rng.SpecialCells(xlCellTypeFormulas)).Select
    Debug.Print Selection.Address
    mais ça ne règle pas les plages filtrées

  8. #8
    Membre émérite
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Points : 2 684
    Points
    2 684
    Par défaut
    Bonjour Philippe;gnain

    CurrentRegion inclut les plages filtrées.
    Cordialement

    Docmarti.

  9. #9
    Membre éprouvé
    Homme Profil pro
    Programmeur analyste
    Inscrit en
    Février 2009
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur analyste
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2009
    Messages : 546
    Points : 1 116
    Points
    1 116
    Par défaut
    Citation Envoyé par Docmarti Voir le message
    Bonjour Philippe;gnain

    CurrentRegion inclut les plages filtrées.
    Bonjour Docmarti,
    se poste m'intéresse beaucoup,

    je ne vois pas comment obtenir l'addresse de tout les cellules non vide avec CurrentRegion
    pouvez-vous m'éclairé?

    sinon j'avais pensé d'enlever tout les filtres avant de faire ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim rng As Range
    Set rng = Cells
    On Error Resume Next
    Union(rng.SpecialCells(xlCellTypeConstants), rng.SpecialCells(xlCellTypeFormulas)).Select
    Debug.Print Selection.Address
    'traitement
    et ensuite remettre les filtres

  10. #10
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 729
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 729
    Points : 28 555
    Points
    28 555
    Billets dans le blog
    53
    Par défaut
    Bonjour Gnain,
    je ne vois pas comment obtenir l'addresse de tout les cellules non vide avec CurrentRegion
    La propriété CurrentRegion renvoie une plage avec les cellules vides et remplies dans sa région (pas deux lignes ou deux colonnes vides autour de la cellule active). C'est l'équivalent de Ctrl + * ou Ctrl + A (A condition pour Ctrl+A que la cellule active ne soit pas seule)
    Ecemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("A1").CurrentRegion
    renverra la plage de la liste de donnees
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  11. #11
    Membre éprouvé
    Homme Profil pro
    Programmeur analyste
    Inscrit en
    Février 2009
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur analyste
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2009
    Messages : 546
    Points : 1 116
    Points
    1 116
    Par défaut
    Bonjour Philippe,
    donc on ne peut utiliser CurrentRegion avec votre demande du départ.
    mais que penser vous de

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim rng As Range
    Set rng = Cells
    On Error Resume Next
    Union(rng.SpecialCells(xlCellTypeConstants), rng.SpecialCells(xlCellTypeFormulas)).Select
    Debug.Print Selection.Address
    'traitement
    cela renvoie bien les adresses de toute les cellules non vides, et si on veut les lignes filtrées,
    il suffit d'enlever les filtres avant ce code, on fait notre traitement, puis on remet les filtres.

  12. #12
    Membre émérite
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Points : 2 684
    Points
    2 684
    Par défaut
    Bonjour gnain

    Bravo pour ta suggestion de xlCellTypeConstants qui m'a mis sur la piste suivante.
    Philippe recherche les plages non contigues, ce qui correspond à CurrentRegion. Il suffit de faire un Union de toutes les CurrentRegion.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Set tout = Nothing
    For Each a In rng
     
     If tout Is Nothing Then
      Set tout = a.CurrentRegion
     Else
      If Intersect(a, tout) Is Nothing Then
       Set tout = Union(tout, a.CurrentRegion)
      End If
     End If
    Next
    Cordialement

    Docmarti.

  13. #13
    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 Changement d'ordre
    Sujet intéressant

    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
    Function UsedAreaAddress(Ws As Worksheet) As String
    Dim Plage As Range
    Dim A As Range
    Dim C As Range
    Dim E As Range
    Dim F As Range
    Dim V As Range
     
    Set Plage = Ws.UsedRange
    On Error Resume Next
    Set C = Plage.SpecialCells(xlCellTypeConstants)
    Set F = Plage.SpecialCells(xlCellTypeFormulas)
    On Error GoTo 0
     
    If Not C Is Nothing Then Set V = C
    Set C = Nothing
     
    If Not F Is Nothing Then
        If V Is Nothing Then
            Set V = F
        Else
            Set V = Union(V, F)
        End If
    End If
    Set F = Nothing
     
    If Not V Is Nothing Then
        Set E = V(1).CurrentRegion
        For Each A In V.Areas
            If Intersect(A, E) Is Nothing Then Set E = Union(E, A.CurrentRegion)
        Next A
    End If
     
    UsedAreaAddress = IIf(E Is Nothing, Plage, E).Address
    Set Plage = Nothing
    End Function
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  14. #14
    Membre éprouvé
    Homme Profil pro
    Programmeur analyste
    Inscrit en
    Février 2009
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur analyste
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2009
    Messages : 546
    Points : 1 116
    Points
    1 116
    Par défaut
    Bonjour à tous,
    mercatog votre fonction renvoie les plages même si il y a des cellules vides à l'intérieur
    comparativement à ce code qui renvoie les adresses des cellules non vides
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim rng As Range
    Set rng = Cells
    On Error Resume Next
    Union(rng.SpecialCells(xlCellTypeConstants), rng.SpecialCells(xlCellTypeFormulas)).Select
    Debug.Print Selection.Address
    'traitement
    Docmarti, je n'ai pas été capable d'utiliser votre code pouvez vous m'éclairé

  15. #15
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    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 379
    Points : 12 073
    Points
    12 073
    Billets dans le blog
    8
    Par défaut re
    Bonsoir
    allez un peu a ma façon
    et c'est encore un dico qui fait tout
    ce code te donne a la fin dans un msgbox chaque plages contiguës en parenthèses
    principe
    on coupe les adresses de cellule obtenu par xltypeconstant

    j'utilise un dictionnaire dans le quel je met les "cellules.currentregion que j'obtient par cette ligne
    cette region englobe les cellulle dans un rectangle il y a donc certainement de cellules blanches a l'interieur mais on s'en fou c'est juste pour déterminer ou vont aller les portions dans le dico
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set region = Range(RgAdresse(i), RgAdresse(i)).CurrentRegion
    en lui injectant chaque morceau de l'adresse obtenu par XlTypeConstants

    si la region n'existe pas on met une nouvelle region dans le dico et on lui met la portion
    sil elle l existe déjà on ajoute la portion a l'item correspondant a la région dans le dico

    et le tour est joué
    lecriture des adresses de plage respecte celle de l'adresse obtenu par le xltypeconstants
    exemple dans la capture d'écran ci dessous ,
    Philipe tu peux même traiter tes régions(plages contiguës) indifféremment dans la boucle du dico a la fin

    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
    Sub essai()
        Dim rng As Range, RgAdresse, adresseFinal, dicoRange
        Set rng = Cells
        Set dicoRange = CreateObject("Scripting.Dictionary")
        rng.SpecialCells(xlCellTypeConstants).Select
        RgAdresse = Split(Selection.Address, ",")
        For i = 0 To UBound(RgAdresse)
            Set region = Range(RgAdresse(i), RgAdresse(i)).CurrentRegion
            If Not dicoRange.exists(region.Address) Then
                dicoRange(region.Address) = "(" & RgAdresse(i) & ","
            Else
                dicoRange(region.Address) = dicoRange(region.Address) & RgAdresse(i) & ","
            End If
        Next
        For Each elem In dicoRange
            dicoRange(elem) = Replace(dicoRange(elem) & ")", ",)", ")")
            'MsgBox elem & " :" & dicoRange(elem)
            adresseFinal = adresseFinal & "  " & dicoRange(elem)
        Next
        MsgBox adresseFinal
    End Sub
    Nom : Capture.JPG
Affichages : 429
Taille : 133,5 Ko
    merci a Gnain qui nous a mis sur la voie
    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 éprouvé
    Homme Profil pro
    Programmeur analyste
    Inscrit en
    Février 2009
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur analyste
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2009
    Messages : 546
    Points : 1 116
    Points
    1 116
    Par défaut
    Bonjour patricktoulon,
    ce code fonctionne très bien mais il manque les cellules qui ont des formules
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SpecialCells(xlCellTypeFormulas)
    il faudrait l'intégré avec un union

  17. #17
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    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 379
    Points : 12 073
    Points
    12 073
    Billets dans le blog
    8
    Par défaut re
    ou bien aditionner les valeur xltype des cellules
    en l'occurrence ici 23(= tout type)
    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 éprouvé
    Homme Profil pro
    Programmeur analyste
    Inscrit en
    Février 2009
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur analyste
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2009
    Messages : 546
    Points : 1 116
    Points
    1 116
    Par défaut
    J'ai essayé mais cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    rng.SpecialCells(xlCellTypeConstants, 23).Select
    n'égale pas cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Union(rng.SpecialCells(xlCellTypeConstants), rng.SpecialCells(xlCellTypeFormulas)).Select
    ou j'ai mal compris

  19. #19
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    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 379
    Points : 12 073
    Points
    12 073
    Billets dans le blog
    8
    Par défaut re
    c'est bizarre ca devarait marcher pourtant
    1 xl number
    2 xlTextValues
    4 xlLogical
    16 xlError
    et tu peut combiner les types en les additionnant
    16 + 4 +2 +1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     SpecialCells(xlCellTypeConstants, 23)
    ou bien combiner comme ceci:
    mais ca génère une erreur si il n'y a pas de cellules des types demandés
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub Test()
     
     Dim x As XlSpecialCellsValue
     x = xlTextValues ' xlNumbers,xlLogical,xlErrors
     
     Dim Y As XlCellType
     Y = xlCellTypeFormulas
     
     Range("A1:h200").SpecialCells(Y, x).Select
     
     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

  20. #20
    Membre expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 267
    Points : 3 663
    Points
    3 663
    Par défaut
    Bonjour,

    Citation Envoyé par patricktoulon Voir le message
    c'est bizarre ca devarait marcher pourtant

    et tu peut combiner les types en les additionnant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     SpecialCells(xlCellTypeConstants, 23)
    Petite confusion entre XlCellType et XlSpecialCellsValue je pense.
    Ces 4 constantes (XlSpecialCellsValue) concernent le paramètre Value qui vient en complément du Type s'il est xlCellTypeConstants ou xlCellTypeFormulas
    expression.SpecialCells(Type, Value)
    Mettre les 4 XlSpecialCellsValue n'ajoutera pas le Type xlCellTypeFormulas
    eric

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 5 12345 DernièreDernière

Discussions similaires

  1. Réponses: 4
    Dernier message: 06/08/2014, 19h25
  2. [XL-2003] calcule le nombre de ligne non vide dans une colonne donnée
    Par aefmaaradji dans le forum Excel
    Réponses: 2
    Dernier message: 27/07/2010, 16h08
  3. nombre d'argument non specifie dans une fonction
    Par elmcherqui dans le forum C++
    Réponses: 2
    Dernier message: 27/05/2008, 19h10
  4. Réponses: 5
    Dernier message: 22/02/2008, 20h34
  5. nombre de valeurs non nulles dans une tables
    Par 080983 dans le forum SQL
    Réponses: 33
    Dernier message: 27/08/2007, 13h04

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