Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Rechercher la premiere cellule dans une colonne ayant comme 1ere lettre G

8 réponses
Avatar
Alex
Bonjour =E0 tous,

J'ai une base de donn=E9es, que je dois diviser en 4 parties. J'ai donc
proc=E9d=E9 =E0 la copie de ma feuille en 4 exemplaires. Sur la premiere
feuille en colonne A, je ne veux que les donnees dont la 1ere lettre
de texte est compris entre A et F, et supprimer toutes les lignes dont
la 1ere lettre de la cellule commence de G =E0 Z. la m=EAme chose pour les
autres copies de feuille, mais avec des lettres diff=E9rentes, pour
exemple, le deuxieme onglet je voudrais conserver uniquement les
lignes avec les lettres G =E0 L, et supprimer les lignes avec AF et M =E0
Z.
J'ai tent=E9 de combiner les fonctions RECHERCHER et LEFT, mais cela ne
fonctionne pas.
Quelqu'un aurait il la solution =E0 mon probl=E8me.
Par avance merci pour vos r=E9ponses.
Bien cordialement.
Alex

8 réponses

Avatar
Alex
Re bonjour à tous,

Pour info, j'avais ecrit ceci :


Columns("A:A").Select
Dim Cellule As Range


For Each Cellule In Selection
If Left(Cellule, 1) <> "A" Or Left(Cellule, 1) <> "B" Or
Left(Cellule, 1) <> "C" Or Left(Cellule, 1) <> "D" Or Left(Cellule, 1)
<> "E" Or Left(Cellule, 1) <> "F" Then
Cellule.Rows.EntireRow.Delete
End If
Next Cellule

Cela ne fonctionne pas et en plus je suis obliger de stopper la macro
sinon elle tourne sans fin ???

Merci encore de votre aide.
Cordialement.
Alex
Avatar
MichD
Bonjour,

Utilise le filtre automatique.

La première ligne de tes données est une ligne d'étiquette
Tu sélectionnes la colonne à partir de laquelle tu veux appliquer les conditions
conduisant à la suppression des lignes de ta base de données

A ) Sur la première feuille en colonne A, je ne veux que les
données dont la 1ere lettre de texte est compris entre A et F
***Tu choisis comme critère de ton filtre personnalisé :
Plus grand ou égale à G comme critère
Seules les lignes à supprimer demeureront visibles.
Tu sélectionnes la plage de résultat moins la ligne de titre
Menu Édition / Atteindre / cellules / options : Cellules visibles seulement
et tu supprimes..

B ) la 1ere lettre de la cellule commence de G à Z.
Tu reprends le filtre automatique (personnaliser)
critère : Plus grand ou égal à F ET Plus petit ou égal à Z
et tu répètes le même processus pour supprimer les lignes visibles.

Quelques minutes, et tu auras le résultat attendu.
On peut en faire une macro... mais si c'est seulement pour une occasion,
ça prend moins de temps de le faire manuellement que d'écrire la macro...

MichD
--------------------------------------------
"Alex" a écrit dans le message de groupe de discussion :


Bonjour à tous,

J'ai une base de données, que je dois diviser en 4 parties. J'ai donc
procédé à la copie de ma feuille en 4 exemplaires. Sur la première
feuille en colonne A, je ne veux que les données dont la 1ere lettre
de texte est compris entre A et F, et supprimer toutes les lignes dont
la 1ere lettre de la cellule commence de G à Z. la même chose pour les
autres copies de feuille, mais avec des lettres différentes, pour
exemple, le deuxieme onglet je voudrais conserver uniquement les
lignes avec les lettres G à L, et supprimer les lignes avec AF et M à
Z.
J'ai tenté de combiner les fonctions RECHERCHER et LEFT, mais cela ne
fonctionne pas.
Quelqu'un aurait il la solution à mon problème.
Par avance merci pour vos réponses.
Bien cordialement.
Alex
Avatar
FFO
On 2 mai, 13:06, Alex wrote:
Re bonjour à tous,

Pour info, j'avais ecrit ceci :

Columns("A:A").Select
Dim Cellule As Range

    For Each Cellule In Selection
        If Left(Cellule, 1) <> "A" Or Left(Cellule, 1) <> "B" Or
Left(Cellule, 1) <> "C" Or Left(Cellule, 1) <> "D" Or Left(Cellule, 1)
<> "E" Or Left(Cellule, 1) <> "F" Then
Cellule.Rows.EntireRow.Delete
        End If
        Next Cellule

Cela ne fonctionne pas et en plus je suis obliger de stopper la macro
sinon elle tourne sans fin ???

Merci encore de votre aide.
Cordialement.
Alex



Salut à toi

Ce bout de code devrait faire :

For Each Cellule In Selection
If Left(Cellule, 1) <> "A" And Left(Cellule, 1) <> "B" And
Left(Cellule, 1) <> "C" And Left(Cellule, 1) <> "D" And Left(Cellule,
1) <> "E" And Left(Cellule, 1) <> "F" Then
Cellule.Clear
n = n + 1
End If
Next Cellule
If n > 0 Then
Selection.SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End If

Attention si tu veux supprimer toutes les lignes dont la 1° lettre de
la donnée colonne A n'est pas comprise entre A et F ce n'est pas
l'opérateur "Or" qui faut utiliser mais "And" dans cette ligne de
code :

If Left(Cellule, 1) <> "A" And Left(Cellule, 1) <> "B" And
Left(Cellule, 1) <> "C" And Left(Cellule, 1) <> "D" And Left(Cellule,
1) <> "E" And Left(Cellule, 1) <> "F" Then

Fais des essais et dis moi !!!!!
Avatar
FFO
On 2 mai, 13:38, FFO wrote:
On 2 mai, 13:06, Alex wrote:





> Re bonjour à tous,

> Pour info, j'avais ecrit ceci :

> Columns("A:A").Select
> Dim Cellule As Range

>     For Each Cellule In Selection
>         If Left(Cellule, 1) <> "A" Or Left(Cellule, 1) <> "B" O r
> Left(Cellule, 1) <> "C" Or Left(Cellule, 1) <> "D" Or Left(Cellule, 1)
> <> "E" Or Left(Cellule, 1) <> "F" Then
> Cellule.Rows.EntireRow.Delete
>         End If
>         Next Cellule

> Cela ne fonctionne pas et en plus je suis obliger de stopper la macro
> sinon elle tourne sans fin ???

> Merci encore de votre aide.
> Cordialement.
> Alex

Salut à toi

Ce bout de code devrait faire :

For Each Cellule In Selection
        If Left(Cellule, 1) <> "A" And Left(Cellule, 1) <> "B" An d
Left(Cellule, 1) <> "C" And Left(Cellule, 1) <> "D" And Left(Cellule,
1) <> "E" And Left(Cellule, 1) <> "F" Then
Cellule.Clear
n = n + 1
        End If
        Next Cellule
If n > 0 Then
Selection.SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End If

Attention si tu veux supprimer toutes les lignes dont la 1° lettre de
la donnée colonne A n'est pas comprise entre A et F ce n'est pas
l'opérateur "Or" qui faut utiliser mais "And" dans cette ligne de
code :

If Left(Cellule, 1) <> "A" And Left(Cellule, 1) <> "B" And
Left(Cellule, 1) <> "C" And Left(Cellule, 1) <> "D" And Left(Cellule,
1) <> "E" And Left(Cellule, 1) <> "F" Then

Fais des essais et dis moi !!!!!- Masquer le texte des messages précé dents -

- Afficher le texte des messages précédents -



Rebonjours à toi

Une petite suggestion pour alléger l'écriture de tes conditions

Au lieu de mettre :

If Left(Cellule, 1) <> "A" And Left(Cellule, 1) <> "B" And
Left(Cellule, 1) <> "C" And Left(Cellule, 1) <> "D" And Left(Cellule,
1) <> "E" And Left(Cellule, 1) <> "F" Then

Mets plutôt :

If "ABCDEF" Like "*" & Left(Cellule, 1) & "*" = False Then

C'est nettement plus simple et au résultat identique

Fais des essais et dis moi !!!!!!
Avatar
Alex
Re bonjour à tous,

Merci pour vos réponses. J'ai retenu la solution de FFO, qui
fonctionne très bien.
Encore un grand merci
Cordialement.
Alex
Avatar
Jacquouille
Bonjour Denis

En bouclant sur col A, ne pourrait-on deleter toutes les lignes dont le
premier car de gauche ne serait pas compris entre car(65) et car(70) ?
Ce n'est pas faisable ?

Jacquouille

" Le vin est au repas ce que le parfum est à la femme."
"MichD" a écrit dans le message de groupe de discussion :
ipm4rf$trk$

Bonjour,

Utilise le filtre automatique.

La première ligne de tes données est une ligne d'étiquette
Tu sélectionnes la colonne à partir de laquelle tu veux appliquer les
conditions
conduisant à la suppression des lignes de ta base de données

A ) Sur la première feuille en colonne A, je ne veux que les
données dont la 1ere lettre de texte est compris entre A et F
***Tu choisis comme critère de ton filtre personnalisé :
Plus grand ou égale à G comme critère
Seules les lignes à supprimer demeureront visibles.
Tu sélectionnes la plage de résultat moins la ligne de titre
Menu Édition / Atteindre / cellules / options : Cellules visibles
seulement
et tu supprimes..

B ) la 1ere lettre de la cellule commence de G à Z.
Tu reprends le filtre automatique (personnaliser)
critère : Plus grand ou égal à F ET Plus petit ou égal à Z
et tu répètes le même processus pour supprimer les lignes visibles.

Quelques minutes, et tu auras le résultat attendu.
On peut en faire une macro... mais si c'est seulement pour une occasion,
ça prend moins de temps de le faire manuellement que d'écrire la macro...

MichD
--------------------------------------------
"Alex" a écrit dans le message de groupe de discussion :


Bonjour à tous,

J'ai une base de données, que je dois diviser en 4 parties. J'ai donc
procédé à la copie de ma feuille en 4 exemplaires. Sur la première
feuille en colonne A, je ne veux que les données dont la 1ere lettre
de texte est compris entre A et F, et supprimer toutes les lignes dont
la 1ere lettre de la cellule commence de G à Z. la même chose pour les
autres copies de feuille, mais avec des lettres différentes, pour
exemple, le deuxieme onglet je voudrais conserver uniquement les
lignes avec les lettres G à L, et supprimer les lignes avec AF et M à
Z.
J'ai tenté de combiner les fonctions RECHERCHER et LEFT, mais cela ne
fonctionne pas.
Quelqu'un aurait il la solution à mon problème.
Par avance merci pour vos réponses.
Bien cordialement.
Alex
Avatar
MichD
Bonjour,

Un exemple de macro avec une boucle dans laquelle tu
énumères les lettres dont la première lettre du texte contenu
dans la plage de cellules débute et que tu veux conserver !

Le seul hic c'est le temps de procéder si la plage est grande.
L'utilisation d'un filtre élaboré dans cette situation est de loin
plus rapide et efficace...

Sub test()
Dim Rg As Range, NbRows As Long, A As Long
With Sheet1
Set Rg = .Range("A1:A" & .Range("A65536").End(xlUp).Row)
End With

With Rg
NbRows = .Rows.Count
For A = NbRows To 1 Step -1
Select Case UCase(Left(Rg(A), 1))
Case Is = "A", "B", "C", "D", "F"
Case Else
Rg(A).EntireRow.Delete
End Select
Next
End With
End Sub



MichD
--------------------------------------------
Avatar
Jacquouille
Bonsoir Denis
Ben voilà encore une belle petite macro grâce à laquelle j'ai appris case Is
...else
Merci et à bientôt


Jacquouille

" Le vin est au repas ce que le parfum est à la femme."
"MichD" a écrit dans le message de groupe de discussion :
ipm91v$98g$

Bonjour,

Un exemple de macro avec une boucle dans laquelle tu
énumères les lettres dont la première lettre du texte contenu
dans la plage de cellules débute et que tu veux conserver !

Le seul hic c'est le temps de procéder si la plage est grande.
L'utilisation d'un filtre élaboré dans cette situation est de loin
plus rapide et efficace...

Sub test()
Dim Rg As Range, NbRows As Long, A As Long
With Sheet1
Set Rg = .Range("A1:A" & .Range("A65536").End(xlUp).Row)
End With

With Rg
NbRows = .Rows.Count
For A = NbRows To 1 Step -1
Select Case UCase(Left(Rg(A), 1))
Case Is = "A", "B", "C", "D", "F"
Case Else
Rg(A).EntireRow.Delete
End Select
Next
End With
End Sub



MichD
--------------------------------------------