Si texte gras, copier ailleurs (débutant)

Résolu/Fermé
Patrack33 Messages postés 10 Date d'inscription mercredi 15 janvier 2014 Statut Membre Dernière intervention 21 janvier 2014 - 21 janv. 2014 à 02:09
Patrack33 Messages postés 10 Date d'inscription mercredi 15 janvier 2014 Statut Membre Dernière intervention 21 janvier 2014 - 21 janv. 2014 à 22:53
Bonjour,

Je cherche une macro qui recherche dans la colone B s'il y a un texte en gras, et si oui qui copie le texte dans la colone A à la ligne n+1

par exemple :

si B17 est en gras , copier B17 en A18

Une ame charitable pour me venir en aide ?


A voir également:

6 réponses

Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
21 janv. 2014 à 02:26
Bonjour,

A adapter

Sub Test()
Dim dLig As Long
Dim i As Long

dLig = Range("B1").End(xlDown).Row
For i = 1 To dLig
    If Range("B" & i).Font.Bold = True Then
        Range("A" & i + 1).Value = Range("B" & i).Value
    End If
Next i

End Sub

0
Patrack33 Messages postés 10 Date d'inscription mercredi 15 janvier 2014 Statut Membre Dernière intervention 21 janvier 2014
21 janv. 2014 à 14:45
Bonjour ,

je viens de tester ta macro et le message d'erreur "execution '1004' : La méthode 'Range' de l'objet '_Global' a échoué " apparait.

à la ligne :
If Range("B" & i).Font.Bold = True Then

(je suis désolé de poser des questions idiotes , mais je suis vraiment néophyte)
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
21 janv. 2014 à 15:35
Bonjour,

Faire un test avec ça:

Sub Test()
Dim dLig As Long
Dim i As Long

With Sheets(1)  ' A adapter --- Mettre la ref de l'onglet qui doit être traité
dLig = .Range("B1").End(xlDown).Row
For i = 1 To dLig
    If .Range("B" & i).Font.Bold = True Then
        .Range("A" & i + 1).Value = .Range("B" & i).Value
    End If
Next i
End With

End Sub


Chez moi ça fonctionne quand je suis sur la feuille active.

Idem pour la boucle, il faut mettre For i = (la première ligne à tester)
Si la cellule B1 est vide, la macro plante !!!


0
Patrack33 Messages postés 10 Date d'inscription mercredi 15 janvier 2014 Statut Membre Dernière intervention 21 janvier 2014
21 janv. 2014 à 22:40
ça marche !
Merci Polux

sauf que sur mon fichier à traiter, il y a beaucoup de lignes ayant la case b vide et qu'effectivement dans ce cas la macro s'arrête à la 1ère ligne vide ...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
21 janv. 2014 à 22:51
Alors il faut changer le mode de recherche de la dernière cellule vide comme ça:

dLig = .Range("B" & Rows.Count).End(xlUp).Row

0
Patrack33 Messages postés 10 Date d'inscription mercredi 15 janvier 2014 Statut Membre Dernière intervention 21 janvier 2014
21 janv. 2014 à 22:53
Désolé ta 1ere propo était la bonne , je ne sais juste pas écrire
un Grand merci à toi Polux !
0