Modifier une cellule d'après des caractères

Bonjour à vous tous,

J'aimerais pouvoir utiliser une macro qui modifierait les cellules de la colonne "J" par rapport à certains caractères spéciaux se trouvant dans la colonne "I"

Mon caractère sépcial est le "/". En fonction du nombre de "/" se trouvant dans la colonne "I", les données de la colonne "J" doivent se multiplier. J'ai mis les exemples de résultats dans le fichier excel ci-joint.

Faut-il utiliser la fonction If Then Else pour ce type d'opération ?

Merci pour votre aide !

9macro-ifthenelse.csv (254.00 Octets)

Bonjour

une proposition sans macro avec une formule

A tester ...... Suffisant ?

Cordialement

FINDRH

Merci pour la formule, mais je dois pouvoir l'utiliser dans une macro.

Petite rectif : Il se peut également que je n'ai pas de caractères spéciaux dans la colonne "I", là il ne faut alors rien faire.

Bonjour Brutalizer, Findrh, bonjour le forum,

Essaie comme ça :

Sub Macro1()
Dim O As Object 'déclare la variable O (Onglet)
Dim DL As Integer 'déclare la variable DL (Dernière Ligne)
Dim TC As Variant 'déclare la variable TC (Tableau de cellules)
Dim I As Integer 'déclare la variable I (Incrément)
Dim NB As Byte 'déclare la variable NB (NomBre)
Dim NT As String 'déclare la variable NT (Nouveau Textte)

Set O = Sheets("Macro IfThenElse") 'définit l'onglet O
DL = O.Cells(Application.Rows.Count, 1).End(xlUp).Row 'définit la derniere ligne éditée DL de lacolonne 1 (=A) de l'onglet O
TC = O.Range("A1:A" & DL) 'définit le tableau de cellules TC
For I = 2 To UBound(TC, 1) 'boucle 1 : sur toutes les lignes du tableau de cellulles TC
    NT = "" 'réinitialise le nouveau texte NT
    NB = UBound(Split(TC(I, 1), "/")) + 1 'Définit le nombre de slash (/) NB dans TC(I, 1)
    For J = 1 To NB 'boucle 2 : sur le nombre de slashs NB
        'définit le nouveau texte NT
        NT = IIf(NT = "", O.Cells(I, 2).Value, NT & "/" & O.Cells(I, 2).Value)
    Next J 'prochain slash de la boucle 2
    O.Cells(I, 3).Value = NT 'place dans la colonne C le nouveau texte NT
Next I 'prochaine ligne de la boucle 1
End Sub

Bonjour Thautème

La macro marche très bien par rapport a mon fichier csv que j'ai rajouté ici. Dans mon explication je parle des colonnes I et J, et dans mon fichier csv, il m'a tout mis dans les colonnes A et B...

En regardant ton code, je me dis que je n'ai que les codes des colonnes à modifier, malheureusement ca ne fonctionne pas comme je veux.

Thauthème, que donnerait ton code si tout se passait dans les colonnes I et J ?

J'ai refait le fichier avec la macro intégrée ci-joint.

Super merci

Bonjour le fil, bonjour le forum,

LE code adapté et modifié. J'ai rajouté la possibilité qu'il n'y ait aucun slash :

Sub Transformer()
Dim O As Object 'déclare la variable O (Onglet)
Dim DL As Integer 'déclare la variable DL (Dernière Ligne)
Dim TC As Variant 'déclare la variable TC (Tableau de cellules)
Dim I As Integer 'déclare la variable I (Incrément)
Dim NB As Byte 'déclare la variable NB (NomBre)
Dim NT As String 'déclare la variable NT (Nouveau Texte)
Dim J As Integer

Set O = Sheets("Macro IfThenElse") 'définit l'onglet O
DL = O.Cells(Application.Rows.Count, 9).End(xlUp).Row 'définit la derniere ligne éditée DL de la colonne 9 (=I) de l'onglet O
TC = O.Range("I1:I" & DL) 'définit le tableau de cellules TC
For I = 2 To UBound(TC, 1) 'boucle 1 : sur toutes les lignes du tableau de cellulles TC
    NT = "" 'réinitialise le nouveau texte NT
    On Error Resume Next 'gestion des erreur en cas d'erreur passe à la ligne suivante)
    NB = UBound(Split(TC(I, 1), "/")) + 1 'Définit le nombre de slash (/) NB dans TC(I, 9) (génère une erreur si aucun slash)
    If Err <> 0 Then 'condition : si une erreur a été générée
        Err.Clear 'efface l'erreur
        GoTo suite 'va a l'étiquette "suite"
    End If 'fin de la condition
    On Error GoTo 0 'annule la gestion des erreurs
    For J = 1 To NB 'boucle 2 : sur le nombre de slashs NB
        'définit le nouveau texte NT
        NT = IIf(NT = "", O.Cells(I, 10).Value, NT & "/" & O.Cells(I, 10).Value)
    Next J 'prochain slash de la boucle 2
    O.Cells(I, 11).Value = NT 'place dans la colonne C le nouveau texte NT
suite: 'étiquette
Next I 'prochaine ligne de la boucle 1
End Sub

Impeccable ! comme d'habitude sur ce forum !

Je vais étudier les deux codes pour comprendre les changements apportés.

J'apprends petit à petit...je suis encore loin de votre niveau

Enorme merci Thauthème

Rechercher des sujets similaires à "modifier caracteres"