Tri colonne et recherche
Le
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.
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.
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.
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.
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)
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.
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.
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.
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*"
Set rngTrouve =
ActiveSheet.Columns(17).Cells.Find(strChaine,lookat:=xlwhole)
"dyj Orange" 4f65f04f$0$21485$
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.
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.