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

Tri colonne et recherche

18 réponses
Avatar
dyj Orange
Bonjour au groupe,
Sur un très gros fichier Excel (30000-40000 lignes, 40-50 colonnes), je
voudrai faire deux choses:
1. Connaitre la première colonne disponible pour y insérer des infos.
2. Sur une colonne particulière "K", dont les cellules peuvent avoir
plusieurs valeurs, je ne voudrai que conserver les lignes où la cellule
correspondant à la colonne K a pour valeur "couvert".
Je vous remercie pour votre aide.

10 réponses

1 2
Avatar
Jacquouille
Bonjour
La dernière colonne:
Sub Rechercher_la_dernière_colonne()
Range("IV1").Select
Selection.End(xlToLeft).Select
End Sub
----------------------------
Supprimer les lignes dont la cellule K est différente de "couvert"
La ligne 1 est réservée au titre de colonne.

Sub Je_supprime_ligne()
For i = [K65536].End(3).Row To 2 Step -1
For Each c In Range("K2:K" & i)
If Range("K" & i).Value <> "couvert" Then Rows(i).Delete
Next
Next
End Sub
------------------------------------
Jacquouille

" Le vin est au repas ce que le parfum est à la femme."

"dyj Orange" a écrit dans le message de groupe de discussion :
4f64774b$0$12498$

Bonjour au groupe,
Sur un très gros fichier Excel (30000-40000 lignes, 40-50 colonnes), je
voudrai faire deux choses:
1. Connaitre la première colonne disponible pour y insérer des infos.
2. Sur une colonne particulière "K", dont les cellules peuvent avoir
plusieurs valeurs, je ne voudrai que conserver les lignes où la cellule
correspondant à la colonne K a pour valeur "couvert".
Je vous remercie pour votre aide.
Avatar
dyj Orange
Merci beaucoup.C'est adapté et inclus dans mon vba.
Du coup je reviens avec une autre question. je cherche une méthode rapide
pour retrouver un string de caractères dans une colonne avec la fonction
suivante:
-----
strChaine="12"
Set rngTrouve = ActiveSheet.Columns(17).Cells.Find( 'what:=strChaine)
----
Si dans cette colonne j'ai les valeurs 1245, 5612, 12, 6912 Il me renvoie la
première occurrence trouvée 1234 (ligne 1)alors que je m'attends à avoir 12
(ligne 3)
Ou est mon erreur de code. Merci

"Jacquouille" a écrit dans le message de groupe de discussion :
4f64b550$0$7685$

Bonjour
La dernière colonne:
Sub Rechercher_la_dernière_colonne()
Range("IV1").Select
Selection.End(xlToLeft).Select
End Sub
----------------------------
Supprimer les lignes dont la cellule K est différente de "couvert"
La ligne 1 est réservée au titre de colonne.

Sub Je_supprime_ligne()
For i = [K65536].End(3).Row To 2 Step -1
For Each c In Range("K2:K" & i)
If Range("K" & i).Value <> "couvert" Then Rows(i).Delete
Next
Next
End Sub
------------------------------------
Jacquouille

" Le vin est au repas ce que le parfum est à la femme."

"dyj Orange" a écrit dans le message de groupe de discussion :
4f64774b$0$12498$

Bonjour au groupe,
Sur un très gros fichier Excel (30000-40000 lignes, 40-50 colonnes), je
voudrai faire deux choses:
1. Connaitre la première colonne disponible pour y insérer des infos.
2. Sur une colonne particulière "K", dont les cellules peuvent avoir
plusieurs valeurs, je ne voudrai que conserver les lignes où la cellule
correspondant à la colonne K a pour valeur "couvert".
Je vous remercie pour votre aide.
Avatar
Gloops
dyj Orange a écrit, le 18/03/2012 15:25 :
strChaine="12"
Set rngTrouve = ActiveSheet.Columns(17).Cells.Find( 'what:=strChain e)
----
Si dans cette colonne j'ai les valeurs 1245, 5612, 12, 6912 Il me
renvoie la première occurrence trouvée 1234 (ligne 1)alors que je
m'attends à avoir 12 (ligne 3)
Ou est mon erreur de code. Merci




Bonjour,

Pour ma part, j'ai fait le test, j'obtiens 5612 (ligne 2) alors que je
m'attends à trouver 1245 (ligne 1)

Je soupçonne des erreurs des deux côtés. Je trouve bizarre moi auss i,
que nous ne trouvions pas la même chose, et encore plus bizarre
peut-être, que nous ne nous attendions pas à trouver la même chose.

Est-ce qu'un troisième larron réussirait au moins à trouver comme u n de
nous deux, et à partager la même attente ?

(J'ai fait mes tests sous Excel 2007)
Avatar
Jacquouille
Bonsoir

Le string étant par définition très petit, je préfère m'en passer, voire que
les autres s'en passent aussi.
perso, je me contenterais de ceci......
For each c in range ("a2:a100")
If [c] then c.interior;colorIndex=3
Next

Jacquouille

" Le vin est au repas ce que le parfum est à la femme."
"dyj Orange" a écrit dans le message de groupe de discussion :
4f65f04f$0$21485$

Merci beaucoup.C'est adapté et inclus dans mon vba.
Du coup je reviens avec une autre question. je cherche une méthode rapide
pour retrouver un string de caractères dans une colonne avec la fonction
suivante:
-----
strChaine="12"
Set rngTrouve = ActiveSheet.Columns(17).Cells.Find( 'what:=strChaine)
----
Si dans cette colonne j'ai les valeurs 1245, 5612, 12, 6912 Il me renvoie la
première occurrence trouvée 1234 (ligne 1)alors que je m'attends à avoir 12
(ligne 3)
Ou est mon erreur de code. Merci

"Jacquouille" a écrit dans le message de groupe de discussion :
4f64b550$0$7685$

Bonjour
La dernière colonne:
Sub Rechercher_la_dernière_colonne()
Range("IV1").Select
Selection.End(xlToLeft).Select
End Sub
----------------------------
Supprimer les lignes dont la cellule K est différente de "couvert"
La ligne 1 est réservée au titre de colonne.

Sub Je_supprime_ligne()
For i = [K65536].End(3).Row To 2 Step -1
For Each c In Range("K2:K" & i)
If Range("K" & i).Value <> "couvert" Then Rows(i).Delete
Next
Next
End Sub
------------------------------------
Jacquouille

" Le vin est au repas ce que le parfum est à la femme."

"dyj Orange" a écrit dans le message de groupe de discussion :
4f64774b$0$12498$

Bonjour au groupe,
Sur un très gros fichier Excel (30000-40000 lignes, 40-50 colonnes), je
voudrai faire deux choses:
1. Connaitre la première colonne disponible pour y insérer des infos.
2. Sur une colonne particulière "K", dont les cellules peuvent avoir
plusieurs valeurs, je ne voudrai que conserver les lignes où la cellule
correspondant à la colonne K a pour valeur "couvert".
Je vous remercie pour votre aide.
Avatar
Jacquouille
Petite correction....;
entre interior et colorIndex, il faut mettre un . (point) et non un
point-virgule (lapsus claviae)
soit:
For each c in range ("a2:a100")
If [c] then c.interior.colorIndex=3
Next

Jacquouille

" Le vin est au repas ce que le parfum est à la femme."
"Jacquouille" a écrit dans le message de groupe de discussion :
4f662d98$0$7697$

Bonsoir

Le string étant par définition très petit, je préfère m'en passer, voire que
les autres s'en passent aussi.
perso, je me contenterais de ceci......
For each c in range ("a2:a100")
If [c] then c.interior;colorIndex=3
Next

Jacquouille

" Le vin est au repas ce que le parfum est à la femme."
"dyj Orange" a écrit dans le message de groupe de discussion :
4f65f04f$0$21485$

Merci beaucoup.C'est adapté et inclus dans mon vba.
Du coup je reviens avec une autre question. je cherche une méthode rapide
pour retrouver un string de caractères dans une colonne avec la fonction
suivante:
-----
strChaine="12"
Set rngTrouve = ActiveSheet.Columns(17).Cells.Find( 'what:=strChaine)
----
Si dans cette colonne j'ai les valeurs 1245, 5612, 12, 6912 Il me renvoie la
première occurrence trouvée 1234 (ligne 1)alors que je m'attends à avoir 12
(ligne 3)
Ou est mon erreur de code. Merci

"Jacquouille" a écrit dans le message de groupe de discussion :
4f64b550$0$7685$

Bonjour
La dernière colonne:
Sub Rechercher_la_dernière_colonne()
Range("IV1").Select
Selection.End(xlToLeft).Select
End Sub
----------------------------
Supprimer les lignes dont la cellule K est différente de "couvert"
La ligne 1 est réservée au titre de colonne.

Sub Je_supprime_ligne()
For i = [K65536].End(3).Row To 2 Step -1
For Each c In Range("K2:K" & i)
If Range("K" & i).Value <> "couvert" Then Rows(i).Delete
Next
Next
End Sub
------------------------------------
Jacquouille

" Le vin est au repas ce que le parfum est à la femme."

"dyj Orange" a écrit dans le message de groupe de discussion :
4f64774b$0$12498$

Bonjour au groupe,
Sur un très gros fichier Excel (30000-40000 lignes, 40-50 colonnes), je
voudrai faire deux choses:
1. Connaitre la première colonne disponible pour y insérer des infos.
2. Sur une colonne particulière "K", dont les cellules peuvent avoir
plusieurs valeurs, je ne voudrai que conserver les lignes où la cellule
correspondant à la colonne K a pour valeur "couvert".
Je vous remercie pour votre aide.
Avatar
dyj Orange
Merci, c'est très performant.
A l'intérieur de ta boucle "For", comment puis je récupérer la ligne de la
l'occurrence trouvée. J'ai déjà la colonne. Je ne suis pas familier avec ce
type d'écriture.


"Jacquouille" a écrit dans le message de groupe de discussion :
4f663c20$0$7688$

Petite correction....;
entre interior et colorIndex, il faut mettre un . (point) et non un
point-virgule (lapsus claviae)
soit:
For each c in range ("a2:a100")
If [c] then c.interior.colorIndex=3
???????? >----------------------------------- je voudrai récupérer le
N° de la ligne
Next

Jacquouille

" Le vin est au repas ce que le parfum est à la femme."
"Jacquouille" a écrit dans le message de groupe de discussion :
4f662d98$0$7697$

Bonsoir

Le string étant par définition très petit, je préfère m'en passer, voire que
les autres s'en passent aussi.
perso, je me contenterais de ceci......
For each c in range ("a2:a100")
If [c] then c.interior;colorIndex=3
Next

Jacquouille

" Le vin est au repas ce que le parfum est à la femme."
"dyj Orange" a écrit dans le message de groupe de discussion :
4f65f04f$0$21485$

Merci beaucoup.C'est adapté et inclus dans mon vba.
Du coup je reviens avec une autre question. je cherche une méthode rapide
pour retrouver un string de caractères dans une colonne avec la fonction
suivante:
-----
strChaine="12"
Set rngTrouve = ActiveSheet.Columns(17).Cells.Find( 'what:=strChaine)
----
Si dans cette colonne j'ai les valeurs 1245, 5612, 12, 6912 Il me renvoie la
première occurrence trouvée 1234 (ligne 1)alors que je m'attends à avoir 12
(ligne 3)
Ou est mon erreur de code. Merci

"Jacquouille" a écrit dans le message de groupe de discussion :
4f64b550$0$7685$

Bonjour
La dernière colonne:
Sub Rechercher_la_dernière_colonne()
Range("IV1").Select
Selection.End(xlToLeft).Select
End Sub
----------------------------
Supprimer les lignes dont la cellule K est différente de "couvert"
La ligne 1 est réservée au titre de colonne.

Sub Je_supprime_ligne()
For i = [K65536].End(3).Row To 2 Step -1
For Each c In Range("K2:K" & i)
If Range("K" & i).Value <> "couvert" Then Rows(i).Delete
Next
Next
End Sub
------------------------------------
Jacquouille

" Le vin est au repas ce que le parfum est à la femme."

"dyj Orange" a écrit dans le message de groupe de discussion :
4f64774b$0$12498$

Bonjour au groupe,
Sur un très gros fichier Excel (30000-40000 lignes, 40-50 colonnes), je
voudrai faire deux choses:
1. Connaitre la première colonne disponible pour y insérer des infos.
2. Sur une colonne particulière "K", dont les cellules peuvent avoir
plusieurs valeurs, je ne voudrai que conserver les lignes où la cellule
correspondant à la colonne K a pour valeur "couvert".
Je vous remercie pour votre aide.
Avatar
Gloops
Jacquouille a écrit, le 18/03/2012 19:46 :
Bonsoir

Le string étant par définition très petit, je préfère m'en pa sser, voire
que les autres s'en passent aussi.
perso, je me contenterais de ceci......
For each c in range ("a2:a100")
If [c] then c.interior;colorIndex=3
Next

Jacquouille



Bonsoir,

Est-ce qu'on s'arrête sur 5612, avec ça ?
Ou est-ce qu'on préfère
For Each C in ActiveSheet.UsedRange.Columns(1).Cells
If InStr(Str(C), "12") > 0 Then
Debug.Print C.Row ' pour afficher le numéro de ligne
C.Interior.ColorIndex = 3 ' pour colorier la cellule
End If
Next
?

ou peut-être plus simple :
If C.Formula Like "*12*"
Avatar
Fredo P.
Bonjour
Set rngTrouve =
ActiveSheet.Columns(17).Cells.Find(strChaine,lookat:=xlwhole)


"dyj Orange" a écrit dans le message de news:
4f65f04f$0$21485$
Merci beaucoup.C'est adapté et inclus dans mon vba.
Du coup je reviens avec une autre question. je cherche une méthode rapide
pour retrouver un string de caractères dans une colonne avec la fonction
suivante:
-----
strChaine="12"
Set rngTrouve = ActiveSheet.Columns(17).Cells.Find( 'what:=strChaine)
----
Si dans cette colonne j'ai les valeurs 1245, 5612, 12, 6912 Il me renvoie
la première occurrence trouvée 1234 (ligne 1)alors que je m'attends à
avoir 12 (ligne 3)
Ou est mon erreur de code. Merci

"Jacquouille" a écrit dans le message de groupe de discussion :
4f64b550$0$7685$

Bonjour
La dernière colonne:
Sub Rechercher_la_dernière_colonne()
Range("IV1").Select
Selection.End(xlToLeft).Select
End Sub
----------------------------
Supprimer les lignes dont la cellule K est différente de "couvert"
La ligne 1 est réservée au titre de colonne.

Sub Je_supprime_ligne()
For i = [K65536].End(3).Row To 2 Step -1
For Each c In Range("K2:K" & i)
If Range("K" & i).Value <> "couvert" Then Rows(i).Delete
Next
Next
End Sub
------------------------------------
Jacquouille

" Le vin est au repas ce que le parfum est à la femme."

"dyj Orange" a écrit dans le message de groupe de discussion :
4f64774b$0$12498$

Bonjour au groupe,
Sur un très gros fichier Excel (30000-40000 lignes, 40-50 colonnes), je
voudrai faire deux choses:
1. Connaitre la première colonne disponible pour y insérer des infos.
2. Sur une colonne particulière "K", dont les cellules peuvent avoir
plusieurs valeurs, je ne voudrai que conserver les lignes où la cellule
correspondant à la colonne K a pour valeur "couvert".
Je vous remercie pour votre aide.
Avatar
Jacquouille
Bonsoir

Vois ceci:

For Each c In Range("a2:a5")
If [c] = 12 Then
c.Interior.ColorIndex = 3
ad = c.Address
LL = c.Row
MsgBox ad
MsgBox "Ligne " & LL
End If
Next

Tu supprimes le msgbox qui ne te convient pas

Jacquouille

" Le vin est au repas ce que le parfum est à la femme."
"dyj Orange" a écrit dans le message de groupe de discussion :
4f671114$0$21457$

Merci, c'est très performant.
A l'intérieur de ta boucle "For", comment puis je récupérer la ligne de la
l'occurrence trouvée. J'ai déjà la colonne. Je ne suis pas familier avec ce
type d'écriture.


"Jacquouille" a écrit dans le message de groupe de discussion :
4f663c20$0$7688$

Petite correction....;
entre interior et colorIndex, il faut mettre un . (point) et non un
point-virgule (lapsus claviae)
soit:
For each c in range ("a2:a100")
If [c] then c.interior.colorIndex=3
???????? >----------------------------------- je voudrai récupérer le
N° de la ligne
Next

Jacquouille

" Le vin est au repas ce que le parfum est à la femme."
"Jacquouille" a écrit dans le message de groupe de discussion :
4f662d98$0$7697$

Bonsoir

Le string étant par définition très petit, je préfère m'en passer, voire que
les autres s'en passent aussi.
perso, je me contenterais de ceci......
For each c in range ("a2:a100")
If [c] then c.interior;colorIndex=3
Next

Jacquouille

" Le vin est au repas ce que le parfum est à la femme."
"dyj Orange" a écrit dans le message de groupe de discussion :
4f65f04f$0$21485$

Merci beaucoup.C'est adapté et inclus dans mon vba.
Du coup je reviens avec une autre question. je cherche une méthode rapide
pour retrouver un string de caractères dans une colonne avec la fonction
suivante:
-----
strChaine="12"
Set rngTrouve = ActiveSheet.Columns(17).Cells.Find( 'what:=strChaine)
----
Si dans cette colonne j'ai les valeurs 1245, 5612, 12, 6912 Il me renvoie la
première occurrence trouvée 1234 (ligne 1)alors que je m'attends à avoir 12
(ligne 3)
Ou est mon erreur de code. Merci

"Jacquouille" a écrit dans le message de groupe de discussion :
4f64b550$0$7685$

Bonjour
La dernière colonne:
Sub Rechercher_la_dernière_colonne()
Range("IV1").Select
Selection.End(xlToLeft).Select
End Sub
----------------------------
Supprimer les lignes dont la cellule K est différente de "couvert"
La ligne 1 est réservée au titre de colonne.

Sub Je_supprime_ligne()
For i = [K65536].End(3).Row To 2 Step -1
For Each c In Range("K2:K" & i)
If Range("K" & i).Value <> "couvert" Then Rows(i).Delete
Next
Next
End Sub
------------------------------------
Jacquouille

" Le vin est au repas ce que le parfum est à la femme."

"dyj Orange" a écrit dans le message de groupe de discussion :
4f64774b$0$12498$

Bonjour au groupe,
Sur un très gros fichier Excel (30000-40000 lignes, 40-50 colonnes), je
voudrai faire deux choses:
1. Connaitre la première colonne disponible pour y insérer des infos.
2. Sur une colonne particulière "K", dont les cellules peuvent avoir
plusieurs valeurs, je ne voudrai que conserver les lignes où la cellule
correspondant à la colonne K a pour valeur "couvert".
Je vous remercie pour votre aide.
Avatar
dyj Orange
Merci pour toutes ces infos. J'en ai fait des Sub avec passage de
paramètres, mon développement est beaucoup plus clean. Je me heurte à un
problème d'écriture à moins que ce soit impossible. J'insère dans une
colonne vide la formule suivante avec ce code:
With Rg.Offset(, Offset)
'Insertion de la formule pour comparer chaque cellule Lx avec la
cellule A2
.Formula = "=CountIf(DC2:DC2,$EC$1)"
'.Formula = "=CountIf(xR)" ' "=CountIf(A2:A2,$P$1)"
'Fait disparaître la formule pour la valeur 1 si egal ou 0 si
différent
.Value = .Value
End With
Il marche bien, mais comme tu le vois j'ai mis en dur la formule. D'où ma
question: est-il possible d'écrire "=CountIf(MaRef)" MaRef étant initialisé
avant l'appel ?. J'ai fait plusieurs essais sans succès.

"Jacquouille" a écrit dans le message de groupe de discussion :
4f679054$0$7681$

Bonsoir

Vois ceci:

For Each c In Range("a2:a5")
If [c] = 12 Then
c.Interior.ColorIndex = 3
ad = c.Address
LL = c.Row
MsgBox ad
MsgBox "Ligne " & LL
End If
Next

Tu supprimes le msgbox qui ne te convient pas

Jacquouille

" Le vin est au repas ce que le parfum est à la femme."
"dyj Orange" a écrit dans le message de groupe de discussion :
4f671114$0$21457$

Merci, c'est très performant.
A l'intérieur de ta boucle "For", comment puis je récupérer la ligne de la
l'occurrence trouvée. J'ai déjà la colonne. Je ne suis pas familier avec ce
type d'écriture.


"Jacquouille" a écrit dans le message de groupe de discussion :
4f663c20$0$7688$

Petite correction....;
entre interior et colorIndex, il faut mettre un . (point) et non un
point-virgule (lapsus claviae)
soit:
For each c in range ("a2:a100")
If [c] then c.interior.colorIndex=3
???????? >----------------------------------- je voudrai récupérer le
N° de la ligne
Next

Jacquouille

" Le vin est au repas ce que le parfum est à la femme."
"Jacquouille" a écrit dans le message de groupe de discussion :
4f662d98$0$7697$

Bonsoir

Le string étant par définition très petit, je préfère m'en passer, voire que
les autres s'en passent aussi.
perso, je me contenterais de ceci......
For each c in range ("a2:a100")
If [c] then c.interior;colorIndex=3
Next

Jacquouille

" Le vin est au repas ce que le parfum est à la femme."
"dyj Orange" a écrit dans le message de groupe de discussion :
4f65f04f$0$21485$

Merci beaucoup.C'est adapté et inclus dans mon vba.
Du coup je reviens avec une autre question. je cherche une méthode rapide
pour retrouver un string de caractères dans une colonne avec la fonction
suivante:
-----
strChaine="12"
Set rngTrouve = ActiveSheet.Columns(17).Cells.Find( 'what:=strChaine)
----
Si dans cette colonne j'ai les valeurs 1245, 5612, 12, 6912 Il me renvoie la
première occurrence trouvée 1234 (ligne 1)alors que je m'attends à avoir 12
(ligne 3)
Ou est mon erreur de code. Merci

"Jacquouille" a écrit dans le message de groupe de discussion :
4f64b550$0$7685$

Bonjour
La dernière colonne:
Sub Rechercher_la_dernière_colonne()
Range("IV1").Select
Selection.End(xlToLeft).Select
End Sub
----------------------------
Supprimer les lignes dont la cellule K est différente de "couvert"
La ligne 1 est réservée au titre de colonne.

Sub Je_supprime_ligne()
For i = [K65536].End(3).Row To 2 Step -1
For Each c In Range("K2:K" & i)
If Range("K" & i).Value <> "couvert" Then Rows(i).Delete
Next
Next
End Sub
------------------------------------
Jacquouille

" Le vin est au repas ce que le parfum est à la femme."

"dyj Orange" a écrit dans le message de groupe de discussion :
4f64774b$0$12498$

Bonjour au groupe,
Sur un très gros fichier Excel (30000-40000 lignes, 40-50 colonnes), je
voudrai faire deux choses:
1. Connaitre la première colonne disponible pour y insérer des infos.
2. Sur une colonne particulière "K", dont les cellules peuvent avoir
plusieurs valeurs, je ne voudrai que conserver les lignes où la cellule
correspondant à la colonne K a pour valeur "couvert".
Je vous remercie pour votre aide.
1 2