Prioriser une valeur par rapport à une autre (VBA)

Bonjour à tous,

J'ai un nouveau challenge pour vous.

J'aimerais dans une base VBA avoir la possibilité de prioriser une colonne par rapport à une autre, je vais donner un exemple.

Si feuille 2 j'ai la sélection C3 à C42 admettons vide alors utiliser les valeurs D3 à D42 (et si des valeurs en D3 à D42 sont vides alors utiliser les valeurs E3 à E42 (qui auront obligatoirement une valeur))

Si il y a la moindre valeur présente entre C3 et C42 admettons que sur cette base toutes soient vides mais que C15 soit remplie, que ma macro cherche la valeur de C15 puis qu'elle cherche ensuite les valeurs D3 à D42 et pareil pour E3 à E42.

J'espère avoir été explicite.

Merci d'avance pour toute aide

Cordialement

Je viens de trouver après des recherches et c'est plus facile que je ne croyais.

Il faut utiliser la formule

=Si({cellule}><"";{formule};{formule}

Je viens de trouver après des recherches et c'est plus facile que je ne croyais.

Il faut utiliser la formule

=Si({cellule}><"";{formule};{formule}

Bonjour,

Une piste. Lire les commentaires :

Sub Test()

    Dim Plage As Range
    Dim Tbl()
    Dim I As Integer

    Set Plage = Worksheets("Feuil1").Range("C3:E42")

    'si il n'y a pas 40 cellules vides dans la colonne, au moins une valeur présente
    'attention, dans la boucle avec "SpecialCells" les valeurs doivent être contigües
    If WorksheetFunction.CountBlank(Plage.Columns(1)) <> 40 Then 'sur colonne C

        For I = 1 To Plage.Columns(1).SpecialCells(xlCellTypeConstants).Count

            ReDim Preserve Tbl(1 To I)
            Tbl(I) = Plage.Columns(1).SpecialCells(xlCellTypeConstants)(I)

        Next I

    ElseIf WorksheetFunction.CountBlank(Plage.Columns(2)) <> 40 Then 'sur colonne D

        For I = 1 To Plage.Columns(2).SpecialCells(xlCellTypeConstants).Count

            ReDim Preserve Tbl(1 To I)
            Tbl(I) = Plage.Columns(2).SpecialCells(xlCellTypeConstants)(I)

        Next I

    ElseIf WorksheetFunction.CountBlank(Plage.Columns(3)) <> 40 Then 'sur colonne E

        For I = 1 To Plage.Columns(3).SpecialCells(xlCellTypeConstants).Count

            ReDim Preserve Tbl(1 To I)
            Tbl(I) = Plage.Columns(3).SpecialCells(xlCellTypeConstants)(I)

        Next I

    End If

    'traitement des valeurs...
    For I = 1 To UBound(Tbl)

        Debug.Print Tbl(I)

    Next I

End Sub

Hervé.


Oups, par rafraîchi !

Mon dieu je n'y comprends absolument rien.

Je vais tester ta méthode.

Merci en tout cas pour ce que tu as fait.

Cordialement

Rechercher des sujets similaires à "prioriser valeur rapport vba"