Sélectionner les cellules qui contiennent un caractère précis

glaine

XLDnaute Junior
Bonjour à tous,

Je voudrais construire une macros qui ne sélectionne que les lignes qui contiennent un caractère précis ";".
Je me suis lancé avec cela :
Code:
Sub trouv()
ActiveSheet.UsedRange.Columns(2).Select
cible = ";"
For Each Cell In Selection
If Not InStr(cible, Cell) = 0 Then
Cell.EntireRow.Select
Selection.Interior.ColorIndex = 6
Selection.Copy
Sheets.Add
ActiveSheet.Name = "essai"
Range("A1").Select
ActiveSheet.Paste
Application.CutCopyMode = False
End If
Next
End Sub
Mon soucis est que cela ne fonctionne pas et que je ne vois pas comment sélectionner uniquement les cellules qui contiennent le point virgule.
Je glisse mon fichier d'exemple et espère avoir été le plus clair possible. Je remercie par avance les personnes pour toutes aides apportées.
Amicalement
 

Pièces jointes

  • Copie de essai1.xls
    39 KB · Affichages: 50
  • Copie de essai1.xls
    39 KB · Affichages: 58
  • Copie de essai1.xls
    39 KB · Affichages: 61

Chigabaw

XLDnaute Nouveau
Re : Sélectionner les cellules qui contiennent un caractère précis

Bonjour glaine, le forum,
Je n'ai pas très bien compris la demande. Est-ce que tu veux créer une feuille pour chaque ligne copiée? Parce que je pense que si tu mets
Sheets.Add
ActiveSheet.Name = "essai"

en boucle y aura un chevauchement de nom de feuille déjà..
 

glaine

XLDnaute Junior
Re : Sélectionner les cellules qui contiennent un caractère précis

Bonjour,
Pour répondre à ta question, il n'y aura pas de chevauchement. Je l'ai testé déjà en changeant
Code:
Cell.EntireRow.Select
par
Code:
ActiveSheet.UsedRange.Columns(2).Select
.
J'obtiens une feuille essai avec une copie exacte des premières données. Mon soucis est de sélectionner dans mon tableau toutes les cellules qui ont un ";" dans leurs valeurs. Merci pour tes remarques.
 

Chigabaw

XLDnaute Nouveau
Re : Sélectionner les cellules qui contiennent un caractère précis

Re, j'ai bricolé une solution et ça a l'air de marcher, seulement elle crée la feuille "essai" une seule fois. A toi de voir glaine
Sub trouv()
'Ajout d'une unique feuille
Sheets.Add
ActiveSheet.Name = "essai"
Sheets("Copie de essai1").Activate

'Déterminer le nombre de lignes à parcourir dans la feuille Copie de essai1
Dim i As Long
Dim j As Long
Dim a As Long
Dim b As Long

i = Sheets("Copie de essai1").Range("B65536").End(xlUp).Row
For a = 1 To i
Sheets("Copie de essai1").Activate

If Range("B" & a).Value Like "*;*" Then

Cells(a, 2).EntireRow.Interior.ColorIndex = 6
Cells(a, 2).EntireRow.Copy

Sheets("essai").Activate
'Déterminer la dernière ligne libre de la feuille "essai"
j = Sheets("essai").Range("A65536").End(xlUp).Row
j = j + 1
Range("A" & j).Select
ActiveSheet.Paste
Application.CutCopyMode = False

End If
Next
Sheets("essai").Cells(1, 1).EntireRow.Delete
End Sub
 
Dernière édition:

Chigabaw

XLDnaute Nouveau
Re : Sélectionner les cellules qui contiennent un caractère précis

En faite ta boucle n'a pas parcourue toutes les lignes, elle a copié une seule ligne c'est pour ça qu'il n'y a pas eu de chevauchements. Tu ne peux pas créer deux feuilles avec le même nom :) J'ai mis la création de la feuille en dehors de la boucle comme tu l'as remarqué. Bonne continuation
 

Discussions similaires

Statistiques des forums

Discussions
312 488
Messages
2 088 866
Membres
103 979
dernier inscrit
imed