Création de plusieurs IF pour créer une variable

Bonjour,

Je débute totalement en VBA.

J'ai besoin de créer une nouvelle variable dans la colonne C à partir des colonnes A et B de la façon suivante avec plusieurs IF du coup :

SI colonne A = 1 ==> colonne C = colonne B
SI colonne A= 2 ==> colonne C = vide
SI colonne A = 3 ==> colonne C = 1

J'essaye de cette façon mais j'ai du mal :

Sub creavariables()

Dim QC00141_new As Integer

If Range("A1").Value = 1 Then
Range("QC00141_new").Value = Range("A1").Value
Else If Range("A1").Value = 2 Then
Range("QC00141_new").Value = " "
Else If Range("A1").Value = 3 Then
Range("QC00141_new").Value = 1

End If

End Sub

Si c'est simple pour vous, n'hésitez pas à m'aider, merci beaucoup

Bonjour,

je te propose de faire une fonction personnalisée

Dans ton code vba tu colles ca

Function toto(x As Range)

If x = 1 Then toto = x.Offset(0, 1).Value
If x = 2 Then toto = ""
If x = 3 Then toto = 1
End Function

et dans ta cellule c1 tu tapes

=toto(A1)

et tu tires vers le bas

Cdlt

Bonjour et bienvenue,

Alors pour commencer, tu peux jeter un oeil sur les cours VBA en haut de l'ecran, c'est une mine d'or https://www.excel-pratique.com/fr/vba

Pour ce qui est de le macro,

Sub creavariables()

Dim QC00141_new As Integer

If Range("A1").Value = 1 Then
    Range("C1").Value = Range("B1").Value
ElseIf Range("A1").Value = 2 Then
    Range("C1").Value = ""    'Si tu met " " ce n'est pas vide, il y a un espace
ElseIf Range("A1").Value = 3 Then
    Range("C1").Value = 1
End If

End Sub

Range correspond aux cellules. J'imagine que "QC00141_new" doit etre pour passer de la ligne 1 a la 2 puis 3 , .... ? (puisque tu parle de colonne)

Je te conseil de voir et connaitre la leçon 4 pour tes "IF" et lecon 5 "For" des cours.

Et pourquoi pas le "select case" en lecon 4 egalement

A+

Hello, une proposition

Sub creavariables()

If Range("A1").Value = 1 Then
    Range("C1") = Range("B1")
ElseIf Range("A1").Value = 2 Then
    Range("C1") = ""
ElseIf Range("A1").Value = 3 Then
    Range("C1") = 1

End If

End Sub

@+

bonjour à tous,

s'il s'agit de traiter toute la colonne A, une proposition

Sub creavariables()
Dim dl As Long, i As Long

    dl = Cells(Rows.Count, 1).End(xlUp).Row ' dernière ligne utilisée en colonne A
    For i = 1 To dl 'on parcourt toutes les lignes de 1 à dl
        Select Case Range("A" & i).Value 'en fonction de la valeur de la colonne A ligne i
            Case 1 'si 1
                Range("C" & i) = Range("B" & i).Value
            Case 2 ' si 2
                Range("C" & i) = ""
            Case 3 ' si 3
                Range("C" & i) = 1
        End Select
    Next i
End Sub

merci beaucoup pour vos retours rapides, je vais effectivement utiliser ce programme :

Sub creavariables()

If Range("A1").Value = 1 Then
    Range("C1") = Range("B1")
ElseIf Range("A1").Value = 2 Then
    Range("C1") = ""
ElseIf Range("A1").Value = 3 Then
    Range("C1") = 1

End If

End Sub

Après voir comment l'executer sur toute la plage de la colonne A et B ?, je regarde le tuto et reviendrai peut etre vers vous merci beaucoup

Hello,

Ca revient un peu à la méthode de h2so4

Sub creavariables()

DerLigne = Range("A" & Rows.Count).End(xlup).Row

For i = 1 to DerLigne

    If Range("A" & i).Value = 1 Then
        Range("C" & i) = Range("B" & i)
    ElseIf Range("A" & i).Value = 2 Then
        Range("C" & i) = ""
    ElseIf Range("A" & i).Value = 3 Then
        Range("C" & i) = 1

    End If

Next i
End Sub

@+

merci beaucoup h2so4 pour votre code qui correspond à ce que je cherche à faire. ça fonctionne effectivement parfaitement sur la colonne C

Sauriez vous comment attribuer à cette colonne un nom ensuite, à l'intérieur de ce code sachant que l'on cible à chaque fois les valeurs des cellules ?

merci beaucoup

bonjour,

Sauriez vous comment attribuer à cette colonne un nom ensuite, à l'intérieur de ce code sachant que l'on cible à chaque fois les valeurs des cellules ?

On peut mettre le nom de la colonne dans une variable, et utiliser cette variable dans le code, pour le reste je n'ai pas compris la question.

merci beuacoup

re-bonjour,

voici avec l'utilisation de variables pour les colonnes.

Sub creavariables()
Dim dl As Long, i As Long
Dim colatester As Long, colacopier As Long, colcible As Long

'numeros de colonne à utiliser
colatester = 1
colacopier = 2
colcible = 3

    dl = Cells(Rows.Count, 1).End(xlUp).Row ' dernière ligne utilisée en colonne A
    For i = 1 To dl 'on parcourt toutes les lignes de 1 à dl
        Select Case Cells(i, colatester).Value 'en fonction de la valeur de la colonne A ligne i
            Case 1 'si 1
                Cells(i, colcible) = Cells(i, colacopier).Value
            Case 2 ' si 2
                Cells(i, colcible) = ""
            Case 3 ' si 3
                Cells(i, colcible) = 1
        End Select
    Next i
End Sub
Rechercher des sujets similaires à "creation creer variable"