Aide pour formule VBA

Bonjour à tous

Suite à l'import journalier d'un fichier texte joint dans un fichier excel avec formule, j'aimerais automatiser cette tâche par macro.

Cependant , je suis trop peu à l'aise avec VBA et j'ai besoin d'aide pour transformer cette formule en Formulalocal.

La formule excel est la suivante :

=SI(DROITE(B1;1)<>"1";"";SI(OU(GAUCHE(A1;1)="A";GAUCHE(A1;1)="B");"1058";SI(OU(GAUCHE(A1;1)="C";GAUCHE(A1;1)="D";GAUCHE(A1;1)="E");"1059";SI(OU(GAUCHE(A1;1)="F";GAUCHE(A1;1)="G";GAUCHE(A1;1)="H";;GAUCHE(A1;1)="I";GAUCHE(A1;1)="J";GAUCHE(A1;1)="K");"1060";SI(OU(GAUCHE(A1;1)="L";GAUCHE(A1;1)="M");"1061";SI(OU(GAUCHE(A1;1)="N";GAUCHE(A1;1)="O";GAUCHE(A1;1)="P";;GAUCHE(A1;1)="Q";GAUCHE(A1;1)="R");"1062";SI(OU(GAUCHE(A1;1)="S";GAUCHE(A1;1)="T";GAUCHE(A1;1)="U";;GAUCHE(A1;1)="V";GAUCHE(A1;1)="W";GAUCHE(A1;1)="X";GAUCHE(A1;1)="Y";GAUCHE(A1;1)="Z");"1063"; "")))))))

Elle permet si la colonne B1 se termine par 1 et en fonction de la première lettre de la colonne A1 de positionner dans la colonne C1 un code déterminé dans la formule( voir fichier joint)

Par ailleurs le code doit étendre la formule automatiquement de la cellule C1 à la dernière de la ligne et j'ai également un soucis pour le code .

Etes vous ok pour le code suivant

Dim DernLigne As Long

DernLigne = Range("A" & Rows.Count).End(xlUp).Row

Range("C1").AutoFill Destination:=Range("C1:C" & DernLigne)

Merci par avance de vos réponses.

2modele.txt (2.05 Ko)
10modele.xlsx (15.40 Ko)

Bonsoir,

a tester.

DernLigne = Range("A" & Rows.Count).End(xlUp).Row
Range("C1").FormulaLocal = "=SI(DROITE(B1;1)<>""1"";"""";SI(OU(GAUCHE(A1;1)=""A"";GAUCHE(A1;1)=""B"");""1058"";SI(OU(GAUCHE(A1;1)=""C"";GAUCHE(A1;1)=""D"";GAUCHE(A1;1)=""E"");""1059"";SI(OU(GAUCHE(A1;1)=""F"";GAUCHE(A1;1)=""G"";GAUCHE(A1;1)=""H"";;GAUCHE(A1;1)=""I"";GAUCHE(A1;1)=""J"";GAUCHE(A1;1)=""K"");""1060"";SI(OU(GAUCHE(A1;1)=""L"";GAUCHE(A1;1)=""M"");""1061"";SI(OU(GAUCHE(A1;1)=""N"";GAUCHE(A1;1)=""O"";GAUCHE(A1;1)=""P"";;GAUCHE(A1;1)=""Q"";GAUCHE(A1;1)=""R"");""1062"";SI(OU(GAUCHE(A1;1)=""S"";GAUCHE(A1;1)=""T"";GAUCHE(A1;1)=""U"";;GAUCHE(A1;1)=""V"";GAUCHE(A1;1)=""W"";GAUCHE(A1;1)=""X"";GAUCHE(A1;1)=""Y"";GAUCHE(A1;1)=""Z"");""1063""; """")))))))"
Range("C1").AutoFill Destination:=Range("C1:C" & DernLigne)

Cordialement.

Cool

Je teste demain au boulot et te tiens au courant

Merci déjà pour la réponse rapide

Bonjour,

essaie ceci en fonction personalisée:

Function alphabet(zone As Range, Colonne2)

Colonne2 = Right(Colonne2, 1)

If Colonne2 = "" Then Exit Function

With zone

A = Left(zone, 1)

Select Case A

Case Is = "A", "B"

resultat = 1058

Case Is = "C", "D", "E"

resultat = 1059

Case Is = "F", "G", "H", "I", "J", "K"

resultat = 1060

Case Is = "L", "M", "N", "O", "P", "Q", "R"

resultat = 1062

Case Is = "S", "T", "U", "V", "W", "X", "Y", "Z"

resultat = 1063

Case Else

alphabet = "pas trouvé"

End Select

End With

alphabet = resultat

End Function

Bonjour

Code testė avec succès.

Encore un grand merci

Rechercher des sujets similaires à "aide formule vba"