XL 2010 RÉSOLU : Créer une boucle avec une partie de cellule

JeromeR63

XLDnaute Nouveau
Bonjour,

Je souhaite faire en VBA, une recherche dans la colonne M (que j'ai actuellement limité à 30lignes pour le test) pour trouver toutes les cellules dans lesquels je retrouve le mot "CHAPITRE", et ensuite réalisé ces actions :
- Insérer deux lignes après
- mettre la ligne (avec le mot CHAPITRE) en gras et centré à droite
- Insérer une ligne avant

Le problème c'est que je n'arrive pas à faire une recherche avec uniquement le mot CHAPITRE. (En sachant que dans les cellules à trouver il y a de mentionné "MONTANT CHAPITRE x" , x correspond à un nombre différent à chaque fois).

Merci d'avance pour votre aide
Bonne journée

Jérôme

Voici ce que j'ai fait pour l'instant :

Sub Inserer()
Dim chapitre As Integer
Dim i As Integer
chapitre = ActiveCell.Row

For i = chapitre To 1 Step -1

If Range("M", i) = "CHAPITRE" Then
Rows(i + 1).Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Rows(i).Select
Selection.Font.Bold = True
Selection.HorizontalAlignment = xlRight
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
End If


Next i
End Sub
 

Paritec

XLDnaute Barbatruc
Re Bonjour JeromeR63 le forum
j'avais pas bien lu, mais le chapitre = activecell !!! le reste du code !!!! bref
et comme tu n'as pas été fichu de mettre un fichier voilà donc.
a+
Papou:)

VB:
Sub chercher()
    Dim i&, fin&
    With Feuil1
        fin = .Range("M" & Rows.Count).End(3).Row
        For i = fin To 1 Step -1
            If .Cells(i, 13) Like "*CHAPITRE*" Then
                .Rows(i + 1).Insert shift:=xlDown
                .Rows(i + 1).Insert shift:=xlDown
                .Rows(i).Insert shift:=xlDown
                .Cells(i + 1, 13).Font.Bold = 1: .Cells(i + 1, 13).HorizontalAlignment = xlRight
                i = i - 1
            End If
        Next i
    End With
End Sub
 

Pièces jointes

  • JeromeR63 V1.xlsm
    22.8 KB · Affichages: 27
Dernière édition:

JeromeR63

XLDnaute Nouveau
Bonjour,
merci pour ta réponse.
J'ai réussi à la faire fonctionner dans mon classeur.
Il me reste juste un problème, c'est que l'on utilise du coup la fonction "With Feuil1".
Sauf que cette boucle que l'on créé se situe dans une feuille nommé ESTIMATION, qui va être créer au début de la macro. Donc excel m'affiche "erreur de compilation, fonction ou variable attendu".
Que peut-on faire ?
 

zebanx

XLDnaute Accro
Bonjour JeromeR63, bonjour Paritec et le forum

C'était effectivement dommage de ne pas joindre de fichier )-

Deux commentaires par rapport à la réponse - idéale - de Paritec et au code original :
- sur le champ, il faut adopter systématiquement une structure qui part du bas de colonne (derligne/fin) plutôt que d'un terme "chapitre" afin d'avoir une boucle immédiatement opérationnelle si vous modifiez votre tableau.
- l'utilisation de "*CHAPITRE*" permet avec les * de prendre en considération les termes avant et après ce mot dans la cellule. Si vous n'avez qu'un terme, c'est l'utilisation de "?" qu'il faut prendre mais par défaut, "*" est le terme qui sera toujours utilisé.
Ce n'est pas demandé mais on pourrait peut-être y adjoindre un like Lcase("*CHAPITRE*) permettant de prendre aussi les termes écrits en minuscule.

Continuez en tout cas à vous entrainer à faire des petits codes de boucles (for next, if then...) et apprenez à les confronter aux réponses d'utilisateurs chevronnés de code VBA comme la réponse que vous avez déjà obtenue (en ayant la courtoisie de joindre un fichier pour faciliter les échanges et la bonne résolution du sujet).

Bonne journée.
zebanx
 
Dernière édition:

zebanx

XLDnaute Accro
Re-

Tu as été réactif, soyons le aussi. Donc en reprenant à la marge le code précédent de PARITEC :
- Insérer deux lignes après
- mettre la ligne (avec le mot CHAPITRE) en gras et centré à droite
- Insérer une ligne avant
- Travailler sur la sheet "ESTIMATION"
- en ne tenant pas compte du fait que le mot CHAPITRE soit en minuscule ou en majuscule

Ca devrait être ok.
zebanx
 

Pièces jointes

  • classeur.xls
    58 KB · Affichages: 23

Paritec

XLDnaute Barbatruc
bonsoir JeromeR63 le forum
bah oui comment tu veux que je devine que tu vas créer une feuille par macro??
moi j'ai fait un exemple pour te montrer que ce que j'ai fait est bon, mais je n'ai pas de boule de cristal
Pour le with sheets("Estimation") c'était quand même pas compliqué à trouvé
Pour Zebank oui le plus simple si on veut pouvoir chercher majuscule et minuscule, c'est de passer en
option compare text
a+
Papou:)
 

Discussions similaires

Statistiques des forums

Discussions
311 725
Messages
2 081 947
Membres
101 849
dernier inscrit
florentMIG