Passez une cellule Excel en italique

Résolu
nomitse -  
 nomitse -
Bonjour,

Je souhaiterais faire passer une partie de ma cellule en italique.
exemple:

Achats / Purchases ---------> Achats / Purchases

je me demande s'il est possible de faire ça sans passer par une macro VBA.

Si oui, comment?
Si non, quelle est la macro à utiliser.

Merci d'avance

Simon
Configuration: Windows XP
Firefox 3.5.5

17 réponses

  1. Utilisateur anonyme
     
    alors, je penses, séléctionne le texte et met en italique lol
    0
  2. nomitse
     
    Le truc c'est que j'ai plusieurs milliers de cellules à traiter. donc j'aurai voulu pouvoir automatiser ça.
    0
  3. aloulou97 Messages postés 1 Statut Membre
     
    cliquer 2 fois sur la cellule puis sélectionner la partie en question puis passer au menu format ----> cellule ------> police et cliquer sur "Italique" de la zone style
    0
  4. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    Bonjour,
    Le contenu des cellules concernées sont toutes identiques ou presque? J'entends par la qu'elles doivent toutes être selon ce schéma : écriturenormale / italique la partie à "italiquer" étant systématiquement placée derrière un "/". Si tel est le cas, on ne peux que passer par une macro. Sinon, merci de détailler votre description du tableau et des cellules concernées.
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. nomitse
     
    Les cellules suiventes toutes le meme format à savoir : "écriturenormale" / "écritureitalique"
    0
  7. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    Dernières questions avant de passer à l'écriture de notre macro :
    1- Ce formatage de cellules concerne toutes les cellules de ta feuille?
    2- Une partie seulement?
    3- Si oui y a t'il des "/" dans d'autres cellules de ta feuille?
    4- Plusieurs feuilles sont elles concernées?
    5- plusieurs classeurs?
    0
  8. Raph04 Messages postés 182 Statut Membre 24
     
    Je te propose cette macro à lancer sur la bonne colonne :

    Sub transform()
    
    Dim chaine As String
    Dim lig, pos, lgt As Long
    'On paramètre la première ligne (ici 1)
    lig = 1
    'Boucle qui passe sur chaque ligne et qui s'arrete quand il n'y a plus rien dans la colonne A
    Do While Not (Range("A" & lig) = "")
        
        chaine = Range("A" & lig).Value
        'Récupère la position du /
        pos = InStr(chaine, "/")
        'Calcul de la longeur du texte à mettre en italique
        lgt = (Len(chaine) - pos) + 1
        
        'On change la police depuis la position du '/'
        With Range("A" & lig).Characters(Start:=pos, Length:=lgt).Font
            .FontStyle = "Italique"
        End With
        'On passe à la ligne suivante
        lig = lig + 1
        
    Loop
    
    End Sub
    0
  9. Raph04 Messages postés 182 Statut Membre 24
     
    Et là j'ai ajouter un test qui verifie qu'il y a bien un '/' sinon ça met toute la cellule en italique :

    Sub transform()
    
    Dim chaine As String
    Dim lig, pos, lgt As Long
    'On paramètre la première ligne (ici 1)
    lig = 1
    'Boucle qui passe sur chaque ligne et qui s'arrete quand il n'y a plus rien dans la colonne A
    Do While Not (Range("A" & lig) = "")
        
        chaine = Range("A" & lig).Value
        'Récupère la position du /
        pos = InStr(chaine, "/")
        'Calcul de la longeur du texte à mettre en italique
        lgt = (Len(chaine) - pos) + 1
        'S'il y a bien un '/'
        If Not pos = 0 Then
            'On change la police depuis la position du '/'
            With Range("A" & lig).Characters(Start:=pos, Length:=lgt).Font
                .FontStyle = "Italique"
            End With
        End If
        'On passe à la ligne suivante
        lig = lig + 1
        
    Loop
    
    End Sub
    
    0
  10. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    Salut Raph04,
    Un autre code :

    Sub partieitalique()
    Dim debut As Integer, longueur As Integer 'définition des variables
    For Each cell In ActiveSheet.UsedRange 'pour toutes les cellules de la feuille
    If InStr(cell, "/") = 0 Then 'si la cellule ne contient pas de /
    GoTo suite 'alors on passe à la suivante
    End If
    debut = InStr(cell, "/") 'place du / dans la chaine de caractères contenue dans la cellule
    longueur = Len(cell) - debut + 1 'longueur de la chaine de caractères contenue dans la cellule
    With cell.Characters(Start:=debut, Length:=longueur).Font 'avec la police de cette partie de cellule
    .FontStyle = "Italique" 'et bien mettons la en italique
    End With
    suite:
    Next 'cellule suivante s'il vous plait
    End Sub 'fin macro

    Ce code est a placé dans un module VBA : ALT + F11 Insertion/Module
    Copier coller tout le code ci dessus dans la fenêtre qui vient de s'ouvrir puis fermer cette fenêtre.
    Pour utiliser la macro : ALT + F8
    Sélectionner "partieitalique" et cliquer sur exécuter.
    Bon courage
    0
  11. nomitse
     
    Sub transform()

    Dim chaine As String
    Dim lig, pos, lgt As Long
    'On paramètre la première ligne (ici 1)
    lig = 1
    'Boucle qui passe sur chaque ligne et qui s'arrete quand il n'y a plus rien dans la colonne A
    Do While Not (Range("A" & lig) = "")

    chaine = Range("A" & lig).Value
    'Récupère la position du /
    pos = InStr(chaine, "/")
    'Calcul de la longeur du texte à mettre en italique
    lgt = (Len(chaine) - pos) + 1
    'S'il y a bien un '/'
    If Not pos = 0 Then
    'On change la police depuis la position du '/'
    With Range("A" & lig).Characters(Start:=pos, Length:=lgt).Font
    .FontStyle = "Italique"
    End With
    End If
    'On passe à la ligne suivante
    lig = lig + 1

    Loop

    End Sub

    Merci beaucoup cette macro fonctionne très bien. J'ai une dernière question, est il possible d'affecter la macro au classeur entier?

    Simon
    0
  12. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    Oui en bouclant sur toutes les feuilles de ton classeur actif :
    Dim Ws As Worksheet
    For Each Ws In ActiveWorkbook
         ton code ici
    Next Ws

    0
  13. Raph04 Messages postés 182 Statut Membre 24
     
    Oui en effet.
    Mais, pour mon code cela reste sur la colonne A (ou X autre colonne choisie) ;-)
    0
  14. nomitse
     
    Cette solution va t elle me permettre d'appliquer la macro à toute les colonnes/cellules de ma feuille? ainsi qu'à toute les feuilles de mon classeur?

    Simon
    0
  15. Raph04 Messages postés 182 Statut Membre 24
     
    Pour que cela marche sur toute les colonnes, prend le code de pijaku et ajoute le "Pour chaque Feuille" :
    Sub partieitalique()
        Dim Ws As Worksheet
        Dim debut As Integer, longueur As Integer 'définition des variables
        For Each Ws In ActiveWorkbook
            For Each cell In ActiveSheet.UsedRange 'pour toutes les cellules de la feuille
                If InStr(cell, "/") = 0 Then 'si la cellule ne contient pas de /
                    GoTo suite 'alors on passe à la suivante
                End If
                debut = InStr(cell, "/") 'place du / dans la chaine de caractères contenue dans la cellule
                longueur = Len(cell) - debut + 1 'longueur de la chaine de caractères contenue dans la cellule
                With cell.Characters(Start:=debut, Length:=longueur).Font 'avec la police de cette partie de cellule
                    .FontStyle = "Italique" 'et bien mettons la en italique
                End With
            Next 'cellule suivante s'il vous plait
        Next Ws
    End Sub 'fin macro
    
    0
  16. nomitse
     
    Sub partieitalique()
    Dim debut As Integer, longueur As Integer 'définition des variables
    For Each cell In ActiveSheet.UsedRange 'pour toutes les cellules de la feuille
    If InStr(cell, "/") = 0 Then 'si la cellule ne contient pas de /
    GoTo suite 'alors on passe à la suivante
    End If
    debut = InStr(cell, "/") 'place du / dans la chaine de caractères contenue dans la cellule
    longueur = Len(cell) - debut + 1 'longueur de la chaine de caractères contenue dans la cellule
    With cell.Characters(Start:=debut, Length:=longueur).Font 'avec la police de cette partie de cellule
    .FontStyle = "Italique" 'et bien mettons la en italique
    End With
    suite:
    Next 'cellule suivante s'il vous plait

    Dim Ws As Worksheet
    Dim debut As Integer, longueur As Integer 'définition des variables
    For Each Ws In ActiveWorkbook
    For Each cell In ActiveSheet.UsedRange 'pour toutes les cellules de la feuille
    If InStr(cell, "/") = 0 Then 'si la cellule ne contient pas de /
    GoTo suite 'alors on passe à la suivante
    End If
    debut = InStr(cell, "/") 'place du / dans la chaine de caractères contenue dans la cellule
    longueur = Len(cell) - debut + 1 'longueur de la chaine de caractères contenue dans la cellule
    With cell.Characters(Start:=debut, Length:=longueur).Font 'avec la police de cette partie de cellule
    .FontStyle = "Italique" 'et bien mettons la en italique
    End With
    Next 'cellule suivante s'il vous plait
    Next Ws
    End Sub 'fin macro

    Voici les deux macros compilées comme Raph m'a dit de faire seulement il y a un message d'erreur qui me dit qu'il y a une erreur de compilation : Déclaration existante dans la portée en cours. tout en surlignant "debut As Integer" sur la deuxième ligne de la deuxième partie de la macro.

    Quel est le problème?

    Simon
    0
  17. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    Essaye plutôt ceci :

    Sub partieitalique()
    Dim debut As Integer, longueur As Integer, j As Integer
        For j = 1 To Sheets.Count
        Sheets(j).Activate
            For Each cell In ActiveSheet.UsedRange
                If InStr(cell, "/") = 0 Then
                    GoTo suite
                End If
                debut = InStr(cell, "/")
                longueur = Len(cell) - debut + 1
                With cell.Characters(Start:=debut, Length:=longueur).Font
                    .FontStyle = "Italique"
                End With
    suite:
            Next
        Next j
    End Sub
    0
  18. nomitse
     
    Ca fonctionne parfaitement,

    merci à vous pour votre rapidité et vos connaissances.

    Simon
    0