Comment puis je demander à Excel que dés qu'il trouve dans la colonne A une
cellule comportant le mot "rapport", qu'il me deplace cette cellule d'une
case sur sa droite.
Merci, vraiment pas facile, alors avec ton code, ce que j'ai demandé à Isabelle ressemblerait à cà ?
Sub test() Dim c As Range Set c = [A:A].Find("Rapport", MatchCase:=True, lookat:=xlPart) If Not c Is Nothing Then Do ActiveCell.Offset(0, 4).Range("A1").Select ActiveCell.FormulaR1C1 = "=RC[-2]+RC[-1]" ActiveCell.Offset(1, 0).Range("A1").Select Set c = [A:A].Find("Rapport", MatchCase:=True, lookat:=xlPart) Loop Until c Is Nothing End If End Sub
Manu
"DanielCo" a écrit dans le message de news: ilni2n$qtc$
Sub test() Dim c As Range Set c = [A:A].Find("Rapport", MatchCase:=True, lookat:=xlPart) If Not c Is Nothing Then Do c.Cut c.Offset(, 1) c.Offset(1).EntireRow.Insert Set c = [A:A].Find("Rapport", MatchCase:=True, lookat:=xlPart) Loop Until c Is Nothing End If End Sub Daniel
Merci Daniel, ca fonctionne egalement nickel, mais plus dur à comprendre pour moi qui suis novice en VBA, car pour arriver à mes fins, je fais un melange de ce que vous m'apprenez avec des lignes que je m'enregistre par l'enregistreur, et c'est vraiment coton. Par exemple j'essaie maintenant d'inserer une ligne en dessous des cellules qui comportent "Rapport" dans la colonne B et là, j'avoue que c'est costaud, je vais tacher de comprendre ce que tu as fais, dis moi si je me trompe...
Merci, vraiment pas facile, alors avec ton code, ce que j'ai demandé à
Isabelle ressemblerait à cà ?
Sub test()
Dim c As Range
Set c = [A:A].Find("Rapport", MatchCase:=True, lookat:=xlPart)
If Not c Is Nothing Then
Do
ActiveCell.Offset(0, 4).Range("A1").Select
ActiveCell.FormulaR1C1 = "=RC[-2]+RC[-1]"
ActiveCell.Offset(1, 0).Range("A1").Select
Set c = [A:A].Find("Rapport", MatchCase:=True, lookat:=xlPart)
Loop Until c Is Nothing
End If
End Sub
Manu
"DanielCo" <dcolardelleZZZ@free.fr> a écrit dans le message de news:
ilni2n$qtc$1@speranza.aioe.org...
Sub test()
Dim c As Range
Set c = [A:A].Find("Rapport", MatchCase:=True, lookat:=xlPart)
If Not c Is Nothing Then
Do
c.Cut c.Offset(, 1)
c.Offset(1).EntireRow.Insert
Set c = [A:A].Find("Rapport", MatchCase:=True, lookat:=xlPart)
Loop Until c Is Nothing
End If
End Sub
Daniel
Merci Daniel, ca fonctionne egalement nickel, mais plus dur à comprendre
pour moi qui suis novice en VBA, car pour arriver à mes fins, je fais un
melange de ce que vous m'apprenez avec des lignes que je m'enregistre par
l'enregistreur, et c'est vraiment coton.
Par exemple j'essaie maintenant d'inserer une ligne en dessous des
cellules qui comportent "Rapport" dans la colonne B et là, j'avoue que
c'est costaud, je vais tacher de comprendre ce que tu as fais, dis moi si
je me trompe...
Merci, vraiment pas facile, alors avec ton code, ce que j'ai demandé à Isabelle ressemblerait à cà ?
Sub test() Dim c As Range Set c = [A:A].Find("Rapport", MatchCase:=True, lookat:=xlPart) If Not c Is Nothing Then Do ActiveCell.Offset(0, 4).Range("A1").Select ActiveCell.FormulaR1C1 = "=RC[-2]+RC[-1]" ActiveCell.Offset(1, 0).Range("A1").Select Set c = [A:A].Find("Rapport", MatchCase:=True, lookat:=xlPart) Loop Until c Is Nothing End If End Sub
Manu
"DanielCo" a écrit dans le message de news: ilni2n$qtc$
Sub test() Dim c As Range Set c = [A:A].Find("Rapport", MatchCase:=True, lookat:=xlPart) If Not c Is Nothing Then Do c.Cut c.Offset(, 1) c.Offset(1).EntireRow.Insert Set c = [A:A].Find("Rapport", MatchCase:=True, lookat:=xlPart) Loop Until c Is Nothing End If End Sub Daniel
Merci Daniel, ca fonctionne egalement nickel, mais plus dur à comprendre pour moi qui suis novice en VBA, car pour arriver à mes fins, je fais un melange de ce que vous m'apprenez avec des lignes que je m'enregistre par l'enregistreur, et c'est vraiment coton. Par exemple j'essaie maintenant d'inserer une ligne en dessous des cellules qui comportent "Rapport" dans la colonne B et là, j'avoue que c'est costaud, je vais tacher de comprendre ce que tu as fais, dis moi si je me trompe...
Manu
Oulala, non ca ne marche pas du tout, il m'a fait un de ces chantier
"Manu" a écrit dans le message de news: 4d7f4e08$0$5413$
Merci, vraiment pas facile, alors avec ton code, ce que j'ai demandé à Isabelle ressemblerait à cà ?
Sub test() Dim c As Range Set c = [A:A].Find("Rapport", MatchCase:=True, lookat:=xlPart) If Not c Is Nothing Then Do ActiveCell.Offset(0, 4).Range("A1").Select ActiveCell.FormulaR1C1 = "=RC[-2]+RC[-1]" ActiveCell.Offset(1, 0).Range("A1").Select Set c = [A:A].Find("Rapport", MatchCase:=True, lookat:=xlPart) Loop Until c Is Nothing End If End Sub
Manu
"DanielCo" a écrit dans le message de news: ilni2n$qtc$
Sub test() Dim c As Range Set c = [A:A].Find("Rapport", MatchCase:=True, lookat:=xlPart) If Not c Is Nothing Then Do c.Cut c.Offset(, 1) c.Offset(1).EntireRow.Insert Set c = [A:A].Find("Rapport", MatchCase:=True, lookat:=xlPart) Loop Until c Is Nothing End If End Sub Daniel
Merci Daniel, ca fonctionne egalement nickel, mais plus dur à comprendre pour moi qui suis novice en VBA, car pour arriver à mes fins, je fais un melange de ce que vous m'apprenez avec des lignes que je m'enregistre par l'enregistreur, et c'est vraiment coton. Par exemple j'essaie maintenant d'inserer une ligne en dessous des cellules qui comportent "Rapport" dans la colonne B et là, j'avoue que c'est costaud, je vais tacher de comprendre ce que tu as fais, dis moi si je me trompe...
Oulala, non ca ne marche pas du tout, il m'a fait un de ces chantier
"Manu" <manuel.gamin@wanadoo.fr> a écrit dans le message de news:
4d7f4e08$0$5413$ba4acef3@reader.news.orange.fr...
Merci, vraiment pas facile, alors avec ton code, ce que j'ai demandé à
Isabelle ressemblerait à cà ?
Sub test()
Dim c As Range
Set c = [A:A].Find("Rapport", MatchCase:=True, lookat:=xlPart)
If Not c Is Nothing Then
Do
ActiveCell.Offset(0, 4).Range("A1").Select
ActiveCell.FormulaR1C1 = "=RC[-2]+RC[-1]"
ActiveCell.Offset(1, 0).Range("A1").Select
Set c = [A:A].Find("Rapport", MatchCase:=True, lookat:=xlPart)
Loop Until c Is Nothing
End If
End Sub
Manu
"DanielCo" <dcolardelleZZZ@free.fr> a écrit dans le message de news:
ilni2n$qtc$1@speranza.aioe.org...
Sub test()
Dim c As Range
Set c = [A:A].Find("Rapport", MatchCase:=True, lookat:=xlPart)
If Not c Is Nothing Then
Do
c.Cut c.Offset(, 1)
c.Offset(1).EntireRow.Insert
Set c = [A:A].Find("Rapport", MatchCase:=True, lookat:=xlPart)
Loop Until c Is Nothing
End If
End Sub
Daniel
Merci Daniel, ca fonctionne egalement nickel, mais plus dur à comprendre
pour moi qui suis novice en VBA, car pour arriver à mes fins, je fais un
melange de ce que vous m'apprenez avec des lignes que je m'enregistre
par l'enregistreur, et c'est vraiment coton.
Par exemple j'essaie maintenant d'inserer une ligne en dessous des
cellules qui comportent "Rapport" dans la colonne B et là, j'avoue que
c'est costaud, je vais tacher de comprendre ce que tu as fais, dis moi
si je me trompe...
Oulala, non ca ne marche pas du tout, il m'a fait un de ces chantier
"Manu" a écrit dans le message de news: 4d7f4e08$0$5413$
Merci, vraiment pas facile, alors avec ton code, ce que j'ai demandé à Isabelle ressemblerait à cà ?
Sub test() Dim c As Range Set c = [A:A].Find("Rapport", MatchCase:=True, lookat:=xlPart) If Not c Is Nothing Then Do ActiveCell.Offset(0, 4).Range("A1").Select ActiveCell.FormulaR1C1 = "=RC[-2]+RC[-1]" ActiveCell.Offset(1, 0).Range("A1").Select Set c = [A:A].Find("Rapport", MatchCase:=True, lookat:=xlPart) Loop Until c Is Nothing End If End Sub
Manu
"DanielCo" a écrit dans le message de news: ilni2n$qtc$
Sub test() Dim c As Range Set c = [A:A].Find("Rapport", MatchCase:=True, lookat:=xlPart) If Not c Is Nothing Then Do c.Cut c.Offset(, 1) c.Offset(1).EntireRow.Insert Set c = [A:A].Find("Rapport", MatchCase:=True, lookat:=xlPart) Loop Until c Is Nothing End If End Sub Daniel
Merci Daniel, ca fonctionne egalement nickel, mais plus dur à comprendre pour moi qui suis novice en VBA, car pour arriver à mes fins, je fais un melange de ce que vous m'apprenez avec des lignes que je m'enregistre par l'enregistreur, et c'est vraiment coton. Par exemple j'essaie maintenant d'inserer une ligne en dessous des cellules qui comportent "Rapport" dans la colonne B et là, j'avoue que c'est costaud, je vais tacher de comprendre ce que tu as fais, dis moi si je me trompe...
isabelle
bonjour Manu,
lorsqu'il y a insertion ou suppression de lignes dans une boucle, il vaut mieux commencer par le bas et remonter
Sub Macro2() Dim i As Integer For i = Range("A65536").End(xlUp).Row To 1 Step -1 If Range("A" & i) Like "*Rapport*" Then Range("B" & i) = Range("A" & i) Range("A" & i) = "" Rows(i + 1).Insert shift:=xlDown End If Next End Sub
isabelle
bonjour Manu,
lorsqu'il y a insertion ou suppression de lignes dans une boucle, il
vaut mieux commencer par le bas et remonter
Sub Macro2()
Dim i As Integer
For i = Range("A65536").End(xlUp).Row To 1 Step -1
If Range("A" & i) Like "*Rapport*" Then
Range("B" & i) = Range("A" & i)
Range("A" & i) = ""
Rows(i + 1).Insert shift:=xlDown
End If
Next
End Sub
lorsqu'il y a insertion ou suppression de lignes dans une boucle, il vaut mieux commencer par le bas et remonter
Sub Macro2() Dim i As Integer For i = Range("A65536").End(xlUp).Row To 1 Step -1 If Range("A" & i) Like "*Rapport*" Then Range("B" & i) = Range("A" & i) Range("A" & i) = "" Rows(i + 1).Insert shift:=xlDown End If Next End Sub
isabelle
isabelle
voilà,
Sub Macro2() Dim i As Integer For i = Range("A65536").End(xlUp).Row To 1 Step -1 If Range("A" & i) Like "*Rapport*" Then Range("B" & i) = Range("A" & i) Range("A" & i) = "" Range("F" & i) = Range("C" & i) + Range("D" & i) Rows(i + 1).Insert shift:=xlDown End If Next End Sub
isabelle
Le 2011-03-15 07:36, isabelle a écrit :
bonjour Manu,
lorsqu'il y a insertion ou suppression de lignes dans une boucle, il vaut mieux commencer par le bas et remonter
Sub Macro2() Dim i As Integer For i = Range("A65536").End(xlUp).Row To 1 Step -1 If Range("A" & i) Like "*Rapport*" Then Range("B" & i) = Range("A" & i) Range("A" & i) = "" Rows(i + 1).Insert shift:=xlDown End If Next End Sub
isabelle
voilà,
Sub Macro2()
Dim i As Integer
For i = Range("A65536").End(xlUp).Row To 1 Step -1
If Range("A" & i) Like "*Rapport*" Then
Range("B" & i) = Range("A" & i)
Range("A" & i) = ""
Range("F" & i) = Range("C" & i) + Range("D" & i)
Rows(i + 1).Insert shift:=xlDown
End If
Next
End Sub
isabelle
Le 2011-03-15 07:36, isabelle a écrit :
bonjour Manu,
lorsqu'il y a insertion ou suppression de lignes dans une boucle, il
vaut mieux commencer par le bas et remonter
Sub Macro2()
Dim i As Integer
For i = Range("A65536").End(xlUp).Row To 1 Step -1
If Range("A" & i) Like "*Rapport*" Then
Range("B" & i) = Range("A" & i)
Range("A" & i) = ""
Rows(i + 1).Insert shift:=xlDown
End If
Next
End Sub
Sub Macro2() Dim i As Integer For i = Range("A65536").End(xlUp).Row To 1 Step -1 If Range("A" & i) Like "*Rapport*" Then Range("B" & i) = Range("A" & i) Range("A" & i) = "" Range("F" & i) = Range("C" & i) + Range("D" & i) Rows(i + 1).Insert shift:=xlDown End If Next End Sub
isabelle
Le 2011-03-15 07:36, isabelle a écrit :
bonjour Manu,
lorsqu'il y a insertion ou suppression de lignes dans une boucle, il vaut mieux commencer par le bas et remonter
Sub Macro2() Dim i As Integer For i = Range("A65536").End(xlUp).Row To 1 Step -1 If Range("A" & i) Like "*Rapport*" Then Range("B" & i) = Range("A" & i) Range("A" & i) = "" Rows(i + 1).Insert shift:=xlDown End If Next End Sub
isabelle
Manu
Pour quelle raison Isabelle ? pour qu'il soit plus rapide ? de cette facon, le code ne fonctionne que quand il trouve quelque chose en partant du bas, et ca lui evite de perdre + de temps si on partais de haut en bas ?
Manu
"isabelle" a écrit dans le message de news: ilnitp$t1t$
bonjour Manu,
lorsqu'il y a insertion ou suppression de lignes dans une boucle, il vaut mieux commencer par le bas et remonter
Sub Macro2() Dim i As Integer For i = Range("A65536").End(xlUp).Row To 1 Step -1 If Range("A" & i) Like "*Rapport*" Then Range("B" & i) = Range("A" & i) Range("A" & i) = "" Rows(i + 1).Insert shift:=xlDown End If Next End Sub
isabelle
Pour quelle raison Isabelle ? pour qu'il soit plus rapide ? de cette facon,
le code ne fonctionne que quand il trouve quelque chose en partant du bas,
et ca lui evite de perdre + de temps si on partais de haut en bas ?
Manu
"isabelle" <i@v.org> a écrit dans le message de news:
ilnitp$t1t$1@speranza.aioe.org...
bonjour Manu,
lorsqu'il y a insertion ou suppression de lignes dans une boucle, il vaut
mieux commencer par le bas et remonter
Sub Macro2()
Dim i As Integer
For i = Range("A65536").End(xlUp).Row To 1 Step -1
If Range("A" & i) Like "*Rapport*" Then
Range("B" & i) = Range("A" & i)
Range("A" & i) = ""
Rows(i + 1).Insert shift:=xlDown
End If
Next
End Sub
Pour quelle raison Isabelle ? pour qu'il soit plus rapide ? de cette facon, le code ne fonctionne que quand il trouve quelque chose en partant du bas, et ca lui evite de perdre + de temps si on partais de haut en bas ?
Manu
"isabelle" a écrit dans le message de news: ilnitp$t1t$
bonjour Manu,
lorsqu'il y a insertion ou suppression de lignes dans une boucle, il vaut mieux commencer par le bas et remonter
Sub Macro2() Dim i As Integer For i = Range("A65536").End(xlUp).Row To 1 Step -1 If Range("A" & i) Like "*Rapport*" Then Range("B" & i) = Range("A" & i) Range("A" & i) = "" Rows(i + 1).Insert shift:=xlDown End If Next End Sub
isabelle
Manu
Waouuuu ! etonnant qu'en si peu de ligne il puisse faire autant de chose, Vraiment Merci Isabelle
Manu
"isabelle" a écrit dans le message de news: ilnj2b$t1t$
voilà,
Sub Macro2() Dim i As Integer For i = Range("A65536").End(xlUp).Row To 1 Step -1 If Range("A" & i) Like "*Rapport*" Then Range("B" & i) = Range("A" & i) Range("A" & i) = "" Range("F" & i) = Range("C" & i) + Range("D" & i) Rows(i + 1).Insert shift:=xlDown End If Next End Sub
isabelle
Le 2011-03-15 07:36, isabelle a écrit :
bonjour Manu,
lorsqu'il y a insertion ou suppression de lignes dans une boucle, il vaut mieux commencer par le bas et remonter
Sub Macro2() Dim i As Integer For i = Range("A65536").End(xlUp).Row To 1 Step -1 If Range("A" & i) Like "*Rapport*" Then Range("B" & i) = Range("A" & i) Range("A" & i) = "" Rows(i + 1).Insert shift:=xlDown End If Next End Sub
isabelle
Waouuuu ! etonnant qu'en si peu de ligne il puisse faire autant de chose,
Vraiment Merci Isabelle
Manu
"isabelle" <i@v.org> a écrit dans le message de news:
ilnj2b$t1t$2@speranza.aioe.org...
voilà,
Sub Macro2()
Dim i As Integer
For i = Range("A65536").End(xlUp).Row To 1 Step -1
If Range("A" & i) Like "*Rapport*" Then
Range("B" & i) = Range("A" & i)
Range("A" & i) = ""
Range("F" & i) = Range("C" & i) + Range("D" & i)
Rows(i + 1).Insert shift:=xlDown
End If
Next
End Sub
isabelle
Le 2011-03-15 07:36, isabelle a écrit :
bonjour Manu,
lorsqu'il y a insertion ou suppression de lignes dans une boucle, il vaut
mieux commencer par le bas et remonter
Sub Macro2()
Dim i As Integer
For i = Range("A65536").End(xlUp).Row To 1 Step -1
If Range("A" & i) Like "*Rapport*" Then
Range("B" & i) = Range("A" & i)
Range("A" & i) = ""
Rows(i + 1).Insert shift:=xlDown
End If
Next
End Sub
Waouuuu ! etonnant qu'en si peu de ligne il puisse faire autant de chose, Vraiment Merci Isabelle
Manu
"isabelle" a écrit dans le message de news: ilnj2b$t1t$
voilà,
Sub Macro2() Dim i As Integer For i = Range("A65536").End(xlUp).Row To 1 Step -1 If Range("A" & i) Like "*Rapport*" Then Range("B" & i) = Range("A" & i) Range("A" & i) = "" Range("F" & i) = Range("C" & i) + Range("D" & i) Rows(i + 1).Insert shift:=xlDown End If Next End Sub
isabelle
Le 2011-03-15 07:36, isabelle a écrit :
bonjour Manu,
lorsqu'il y a insertion ou suppression de lignes dans une boucle, il vaut mieux commencer par le bas et remonter
Sub Macro2() Dim i As Integer For i = Range("A65536").End(xlUp).Row To 1 Step -1 If Range("A" & i) Like "*Rapport*" Then Range("B" & i) = Range("A" & i) Range("A" & i) = "" Rows(i + 1).Insert shift:=xlDown End If Next End Sub
isabelle
isabelle
oui, car si on commence par le haut et que l'on insère une ligne cela fait cette ligne de plus à vérifier,
isabelle
Le 2011-03-15 07:40, Manu a écrit :
Pour quelle raison Isabelle ? pour qu'il soit plus rapide ? de cette facon, le code ne fonctionne que quand il trouve quelque chose en partant du bas, et ca lui evite de perdre + de temps si on partais de haut en bas ?
Manu
"isabelle" a écrit dans le message de news: ilnitp$t1t$
bonjour Manu,
lorsqu'il y a insertion ou suppression de lignes dans une boucle, il vaut mieux commencer par le bas et remonter
Sub Macro2() Dim i As Integer For i = Range("A65536").End(xlUp).Row To 1 Step -1 If Range("A"& i) Like "*Rapport*" Then Range("B"& i) = Range("A"& i) Range("A"& i) = "" Rows(i + 1).Insert shift:=xlDown End If Next End Sub
isabelle
oui, car si on commence par le haut et que l'on insère une ligne cela
fait cette ligne de plus à vérifier,
isabelle
Le 2011-03-15 07:40, Manu a écrit :
Pour quelle raison Isabelle ? pour qu'il soit plus rapide ? de cette facon,
le code ne fonctionne que quand il trouve quelque chose en partant du bas,
et ca lui evite de perdre + de temps si on partais de haut en bas ?
Manu
"isabelle"<i@v.org> a écrit dans le message de news:
ilnitp$t1t$1@speranza.aioe.org...
bonjour Manu,
lorsqu'il y a insertion ou suppression de lignes dans une boucle, il vaut
mieux commencer par le bas et remonter
Sub Macro2()
Dim i As Integer
For i = Range("A65536").End(xlUp).Row To 1 Step -1
If Range("A"& i) Like "*Rapport*" Then
Range("B"& i) = Range("A"& i)
Range("A"& i) = ""
Rows(i + 1).Insert shift:=xlDown
End If
Next
End Sub
oui, car si on commence par le haut et que l'on insère une ligne cela fait cette ligne de plus à vérifier,
isabelle
Le 2011-03-15 07:40, Manu a écrit :
Pour quelle raison Isabelle ? pour qu'il soit plus rapide ? de cette facon, le code ne fonctionne que quand il trouve quelque chose en partant du bas, et ca lui evite de perdre + de temps si on partais de haut en bas ?
Manu
"isabelle" a écrit dans le message de news: ilnitp$t1t$
bonjour Manu,
lorsqu'il y a insertion ou suppression de lignes dans une boucle, il vaut mieux commencer par le bas et remonter
Sub Macro2() Dim i As Integer For i = Range("A65536").End(xlUp).Row To 1 Step -1 If Range("A"& i) Like "*Rapport*" Then Range("B"& i) = Range("A"& i) Range("A"& i) = "" Rows(i + 1).Insert shift:=xlDown End If Next End Sub
isabelle
Manu
OK, Vraiment Merci Isabelle ainsi qu'à Daniel.
Manu
"isabelle" a écrit dans le message de news: ilnjov$ufp$
oui, car si on commence par le haut et que l'on insère une ligne cela fait cette ligne de plus à vérifier,
isabelle
Le 2011-03-15 07:40, Manu a écrit :
Pour quelle raison Isabelle ? pour qu'il soit plus rapide ? de cette facon, le code ne fonctionne que quand il trouve quelque chose en partant du bas, et ca lui evite de perdre + de temps si on partais de haut en bas ?
Manu
"isabelle" a écrit dans le message de news: ilnitp$t1t$
bonjour Manu,
lorsqu'il y a insertion ou suppression de lignes dans une boucle, il vaut mieux commencer par le bas et remonter
Sub Macro2() Dim i As Integer For i = Range("A65536").End(xlUp).Row To 1 Step -1 If Range("A"& i) Like "*Rapport*" Then Range("B"& i) = Range("A"& i) Range("A"& i) = "" Rows(i + 1).Insert shift:=xlDown End If Next End Sub
isabelle
OK, Vraiment Merci Isabelle ainsi qu'à Daniel.
Manu
"isabelle" <i@v.org> a écrit dans le message de news:
ilnjov$ufp$1@speranza.aioe.org...
oui, car si on commence par le haut et que l'on insère une ligne cela fait
cette ligne de plus à vérifier,
isabelle
Le 2011-03-15 07:40, Manu a écrit :
Pour quelle raison Isabelle ? pour qu'il soit plus rapide ? de cette
facon,
le code ne fonctionne que quand il trouve quelque chose en partant du
bas,
et ca lui evite de perdre + de temps si on partais de haut en bas ?
Manu
"isabelle"<i@v.org> a écrit dans le message de news:
ilnitp$t1t$1@speranza.aioe.org...
bonjour Manu,
lorsqu'il y a insertion ou suppression de lignes dans une boucle, il
vaut
mieux commencer par le bas et remonter
Sub Macro2()
Dim i As Integer
For i = Range("A65536").End(xlUp).Row To 1 Step -1
If Range("A"& i) Like "*Rapport*" Then
Range("B"& i) = Range("A"& i)
Range("A"& i) = ""
Rows(i + 1).Insert shift:=xlDown
End If
Next
End Sub
"isabelle" a écrit dans le message de news: ilnjov$ufp$
oui, car si on commence par le haut et que l'on insère une ligne cela fait cette ligne de plus à vérifier,
isabelle
Le 2011-03-15 07:40, Manu a écrit :
Pour quelle raison Isabelle ? pour qu'il soit plus rapide ? de cette facon, le code ne fonctionne que quand il trouve quelque chose en partant du bas, et ca lui evite de perdre + de temps si on partais de haut en bas ?
Manu
"isabelle" a écrit dans le message de news: ilnitp$t1t$
bonjour Manu,
lorsqu'il y a insertion ou suppression de lignes dans une boucle, il vaut mieux commencer par le bas et remonter
Sub Macro2() Dim i As Integer For i = Range("A65536").End(xlUp).Row To 1 Step -1 If Range("A"& i) Like "*Rapport*" Then Range("B"& i) = Range("A"& i) Range("A"& i) = "" Rows(i + 1).Insert shift:=xlDown End If Next End Sub
isabelle
DanielCo
Tu ne doois pas utiliser ActiveCell, la macro ne sélectionne aucune cellule.
Sub test() Dim c As Range Set c = [A:A].Find("Rapport", MatchCase:=True, lookat:=xlPart) If Not c Is Nothing Then Do c.Cut c.Offset(, 1) 'si tu veux une formule c.Offset(, 4).Formula = "=" & c.Offset(, 2).Address & "+" & c.Offset(, 1).Address 'ou seulement le résultat : c.Offset(, 4) = c.Offset(, 2) + c.Offset(, 1) c.Offset(1).EntireRow.Insert Set c = [A:A].Find("Rapport", MatchCase:=True, lookat:=xlPart) Loop Until c Is Nothing End If End Sub Daniel
Oulala, non ca ne marche pas du tout, il m'a fait un de ces chantier
Tu ne doois pas utiliser ActiveCell, la macro ne sélectionne aucune
cellule.
Sub test()
Dim c As Range
Set c = [A:A].Find("Rapport", MatchCase:=True, lookat:=xlPart)
If Not c Is Nothing Then
Do
c.Cut c.Offset(, 1)
'si tu veux une formule
c.Offset(, 4).Formula = "=" & c.Offset(, 2).Address & "+" &
c.Offset(, 1).Address
'ou seulement le résultat :
c.Offset(, 4) = c.Offset(, 2) + c.Offset(, 1)
c.Offset(1).EntireRow.Insert
Set c = [A:A].Find("Rapport", MatchCase:=True, lookat:=xlPart)
Loop Until c Is Nothing
End If
End Sub
Daniel
Oulala, non ca ne marche pas du tout, il m'a fait un de ces chantier
Tu ne doois pas utiliser ActiveCell, la macro ne sélectionne aucune cellule.
Sub test() Dim c As Range Set c = [A:A].Find("Rapport", MatchCase:=True, lookat:=xlPart) If Not c Is Nothing Then Do c.Cut c.Offset(, 1) 'si tu veux une formule c.Offset(, 4).Formula = "=" & c.Offset(, 2).Address & "+" & c.Offset(, 1).Address 'ou seulement le résultat : c.Offset(, 4) = c.Offset(, 2) + c.Offset(, 1) c.Offset(1).EntireRow.Insert Set c = [A:A].Find("Rapport", MatchCase:=True, lookat:=xlPart) Loop Until c Is Nothing End If End Sub Daniel
Oulala, non ca ne marche pas du tout, il m'a fait un de ces chantier
Jacquouille
Bonjour Manu Pourquoi commencer par le bas?
Supposons que tu analyses une colonne pour y trouver des doublons et que tu veuilles les supprimer. Toutes les cel de A1:A10 contiennent la même valeur. Au moyen d'une boucle, tu commences: For each c in range ("A1:A10") If c="idem" then Else Rows(c).Delete du coup, tu supprimes la ligne 1. Donc, c'est la ligne 2 qui devient 1, entrainant toutes les autres avec elle pour faire place au fond du pannier à la ligne1 ( car on ne supprime rien, on efface et on revoie à la 65536)ligne) Tout fier d'avoir bien travaillé, ton PC passe donc très logiquement à la ligne2. mais, ô cata, la 2 était devenue1 qui a déjà été analysée, donc la ligne1 (ex2) contiendra toujours "idem". C'est donc pour "contrecarrer" cette démarche on ne peut plus logique que nos "grosses têtes" commencent par le bas. dans ce cas-ci, Isabelle commence à la dernière ligne occupée. (Ce que nous appelions au début DelL, mais qui est encore plus concis comme Isabelle l'écrit) De cette manière, A10="idem"----> on supprime--> on s'en fout car c'est A11 qui devient A10. Boulot fait, donc on passe à A9, car il y a "le petit plus: step-1). A9 se fait analyser,.......
Voici donc pourquoi il faut répondre "au-dessus" pour les messages, mais il faut commencer un boucle de destruction "par le bas".
ouf... -) pS pour ce qui est du temps mis, analyser une ligne, qu'elle soit la unième ou la dixième, c'est kif-kif.
Jacquouille
" Le vin est au repas ce que le parfum est à la femme." "Manu" a écrit dans le message de groupe de discussion : 4d7f5022$0$5424$
Pour quelle raison Isabelle ? pour qu'il soit plus rapide ? de cette facon, le code ne fonctionne que quand il trouve quelque chose en partant du bas, et ca lui evite de perdre + de temps si on partais de haut en bas ?
Manu
"isabelle" a écrit dans le message de news: ilnitp$t1t$
bonjour Manu,
lorsqu'il y a insertion ou suppression de lignes dans une boucle, il vaut mieux commencer par le bas et remonter
Sub Macro2() Dim i As Integer For i = Range("A65536").End(xlUp).Row To 1 Step -1 If Range("A" & i) Like "*Rapport*" Then Range("B" & i) = Range("A" & i) Range("A" & i) = "" Rows(i + 1).Insert shift:=xlDown End If Next End Sub
isabelle
Bonjour Manu
Pourquoi commencer par le bas?
Supposons que tu analyses une colonne pour y trouver des doublons et que tu
veuilles les supprimer.
Toutes les cel de A1:A10 contiennent la même valeur.
Au moyen d'une boucle, tu commences:
For each c in range ("A1:A10")
If c="idem" then Else Rows(c).Delete
du coup, tu supprimes la ligne 1.
Donc, c'est la ligne 2 qui devient 1, entrainant toutes les autres avec elle
pour faire place au fond du pannier à la ligne1 ( car on ne supprime rien,
on efface et on revoie à la 65536)ligne)
Tout fier d'avoir bien travaillé, ton PC passe donc très logiquement à la
ligne2.
mais, ô cata, la 2 était devenue1 qui a déjà été analysée, donc la ligne1
(ex2) contiendra toujours "idem".
C'est donc pour "contrecarrer" cette démarche on ne peut plus logique que
nos "grosses têtes" commencent par le bas.
dans ce cas-ci, Isabelle commence à la dernière ligne occupée. (Ce que nous
appelions au début DelL, mais qui est encore plus concis comme Isabelle
l'écrit)
De cette manière, A10="idem"----> on supprime--> on s'en fout car c'est A11
qui devient A10.
Boulot fait, donc on passe à A9, car il y a "le petit plus: step-1). A9 se
fait analyser,.......
Voici donc pourquoi il faut répondre "au-dessus" pour les messages, mais il
faut commencer un boucle de destruction "par le bas".
ouf... -)
pS pour ce qui est du temps mis, analyser une ligne, qu'elle soit la unième
ou la dixième, c'est kif-kif.
Jacquouille
" Le vin est au repas ce que le parfum est à la femme."
"Manu" a écrit dans le message de groupe de discussion :
4d7f5022$0$5424$ba4acef3@reader.news.orange.fr...
Pour quelle raison Isabelle ? pour qu'il soit plus rapide ? de cette facon,
le code ne fonctionne que quand il trouve quelque chose en partant du bas,
et ca lui evite de perdre + de temps si on partais de haut en bas ?
Manu
"isabelle" <i@v.org> a écrit dans le message de news:
ilnitp$t1t$1@speranza.aioe.org...
bonjour Manu,
lorsqu'il y a insertion ou suppression de lignes dans une boucle, il vaut
mieux commencer par le bas et remonter
Sub Macro2()
Dim i As Integer
For i = Range("A65536").End(xlUp).Row To 1 Step -1
If Range("A" & i) Like "*Rapport*" Then
Range("B" & i) = Range("A" & i)
Range("A" & i) = ""
Rows(i + 1).Insert shift:=xlDown
End If
Next
End Sub
Supposons que tu analyses une colonne pour y trouver des doublons et que tu veuilles les supprimer. Toutes les cel de A1:A10 contiennent la même valeur. Au moyen d'une boucle, tu commences: For each c in range ("A1:A10") If c="idem" then Else Rows(c).Delete du coup, tu supprimes la ligne 1. Donc, c'est la ligne 2 qui devient 1, entrainant toutes les autres avec elle pour faire place au fond du pannier à la ligne1 ( car on ne supprime rien, on efface et on revoie à la 65536)ligne) Tout fier d'avoir bien travaillé, ton PC passe donc très logiquement à la ligne2. mais, ô cata, la 2 était devenue1 qui a déjà été analysée, donc la ligne1 (ex2) contiendra toujours "idem". C'est donc pour "contrecarrer" cette démarche on ne peut plus logique que nos "grosses têtes" commencent par le bas. dans ce cas-ci, Isabelle commence à la dernière ligne occupée. (Ce que nous appelions au début DelL, mais qui est encore plus concis comme Isabelle l'écrit) De cette manière, A10="idem"----> on supprime--> on s'en fout car c'est A11 qui devient A10. Boulot fait, donc on passe à A9, car il y a "le petit plus: step-1). A9 se fait analyser,.......
Voici donc pourquoi il faut répondre "au-dessus" pour les messages, mais il faut commencer un boucle de destruction "par le bas".
ouf... -) pS pour ce qui est du temps mis, analyser une ligne, qu'elle soit la unième ou la dixième, c'est kif-kif.
Jacquouille
" Le vin est au repas ce que le parfum est à la femme." "Manu" a écrit dans le message de groupe de discussion : 4d7f5022$0$5424$
Pour quelle raison Isabelle ? pour qu'il soit plus rapide ? de cette facon, le code ne fonctionne que quand il trouve quelque chose en partant du bas, et ca lui evite de perdre + de temps si on partais de haut en bas ?
Manu
"isabelle" a écrit dans le message de news: ilnitp$t1t$
bonjour Manu,
lorsqu'il y a insertion ou suppression de lignes dans une boucle, il vaut mieux commencer par le bas et remonter
Sub Macro2() Dim i As Integer For i = Range("A65536").End(xlUp).Row To 1 Step -1 If Range("A" & i) Like "*Rapport*" Then Range("B" & i) = Range("A" & i) Range("A" & i) = "" Rows(i + 1).Insert shift:=xlDown End If Next End Sub