If avec plusieurs condittions possible pour une cellule

Bonjour à tous,

Je cherche à verifier la valeur de mes cellules dans une colonne afin de les trier.

Si la valeur de la cellule corresponds à "RE" ou "EV" ou "REEV" ou "HEV" ou "PHEV", alors on copie la cellule dans une nouvelle colonne et on efface le contenu de la cellule d'origine.

Pour cela j'ai employé la function Array comme ci-dessous:

Sub deconcatenate_vh_list_non_JATO()

Dim lignfin As Long

Cells(1, 1).End(xlDown).Select
lignfin = ActiveCell.Row

For i = 1 To lignfin
    If Cells(i, 3).Value = Array("RE", "EV", "REEV", "PHEV", "HEV") Then
        Cells(i, 8).Value = Cells(i, 3).Value
        Cells(i, 3).ClearContents
    End If
Next

End Sub

toutefois, je ne comprends pas encore comment faire marcher cette function, et je ne sais meme pas si c'est la bonne à utilizer dans mon cas.

Merci d'avance pour vos conseils!

Mateo.

bonjour,

une manière de faire

Sub deconcatenate_vh_list_non_JATO()

    Dim lignfin As Long

    Cells(1, 1).End(xlDown).Select
    lignfin = ActiveCell.Row

    For i = 1 To lignfin
        Select Case Cells(i, 3).Value
        Case "RE", "EV", "REEV", "PHEV", "HEV"
            Cells(i, 8).Value = Cells(i, 3).Value
            Cells(i, 3).ClearContents
        End Select
    Next

End Sub

Bonjour à toi,

C'est parfait, ça marche impeccable

Merci beaucoup à toi

Bonne journée.

Bonjour Mateo MNH,

Ce qui suit est uniquement pour la détection de la dernière ligne.

Dans ton code VBA, il y a ces 2 lignes :

Cells(1, 1).End(xlDown).Select
lignfin = ActiveCell.Row

Le .Select est inutile (et à éviter) ; mets plutôt :

lignfin = [A1].End(xlDown).Row

ce qui marchera si tu as aucune cellule vide en colonne A.

S'il y a au moins une cellule vide en colonne A, ou si ça pourrait arriver (maintenant ou plus tard) :

lignfin = Cells(Rows.Count, 1).End(xlUp).Row

Cordialement

Merci beaucoup pour cette indication, c'est vraiment sympa d'optimiser mon code comme ça. D'autant que j'utilise cette logique en permanence.

Quelqu'un pourrait m'expliquer la function Array tant qu'on y est svp?

Merci d'avance

Je n'arrive pas à la faire marcher la function liste.

Exemple:

Dim i, j As Variant

Do While Array(i <> (colfin + 8), j <> colfin)
    Workbooks("DATA Hybrides JATO").Sheets("Analyse").Cells(i, 7).Value = Workbooks("DATA Hybrides JATO").Sheets("Classeur JATO - Feuille 1").Cells(1, j).Value
    i = i + 1
    j = j + 1
Loop

Merci à vous si vous pouvez me débuguer

Mateo MNH a écrit :

Je n'arrive pas à la faire marcher la function liste.

Exemple:

Dim i, j As Variant

Do While Array(i <> (colfin + 8), j <> colfin)
    Workbooks("DATA Hybrides JATO").Sheets("Analyse").Cells(i, 7).Value = Workbooks("DATA Hybrides JATO").Sheets("Classeur JATO - Feuille 1").Cells(1, j).Value
    i = i + 1
    j = j + 1
Loop

Merci à vous si vous pouvez me débuguer

cette syntaxe n'est tout simplement pas correcte en VBA.

la syntaxe correcte est

si tu veux tester si les 2 conditions sont vraies

do while i<>colfin +8 and j<> colfin

si tu veux tester si au moins une des conditions est vraie

do while i<>colfin +8 or j<> colfin

si tu veux tester par rapport à une liste de valeurs

il faut boucler sur les valeurs

Merci à toi, c'est beaucoup plus clair maintenant ^^

Par contre il y a un souci de copier/coller non au niveau de tes deux exemples? Parce que je n'arrive pas à voir une difference entre les deux.

Merci encore

re-bonjour,

en effet,

j'ai corrigé mon message précédent

Rechercher des sujets similaires à "condittions possible"