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

Remonter une plage de données

6 réponses
Avatar
JulieH
Bonsoir à toutes et tous,


J'utilise le code suivant pour ajouter une ligne dans une liste de
jours chaque fois qu'il y a le "Mercredi".
For Each c In Range("B3:B20")
If c <> "" And c = "Mercredi" Then
c.EntireRow.Insert

Je voudrais commencer par la fin de la liste afin d'éviter que la macro
ne s'arrête au premier mercredi et ne crée des lignes sans arrêt. Je
suis persuadée qu'il faut utiliser "Step - 1" mais je n'arrive pas à
trouver le code.

Quelqu'un peut-il m'aider ?

Merci d'avance

Julie

6 réponses

Avatar
JB
Bonsoir,

For lig = 20 To 3 Step -1
If Cells(lig, 2) = "Mercredi" Then Rows(lig).Delete
Next lig

JB
http://boisgontierjacques.free.fr/

On 18 déc, 18:53, JulieH wrote:
Bonsoir à toutes et tous,

        J'utilise le code suivant pour ajouter une ligne dans une liste de
jours chaque fois qu'il y a le "Mercredi".
            For Each c In Range("B3:B20")
             If c <> "" And c = "Mercredi" Then
             c.EntireRow.Insert

        Je voudrais commencer par la fin de la liste afin d'évi ter que la macro
ne s'arrête au premier mercredi et ne crée des lignes sans arrêt. J e
suis persuadée qu'il faut utiliser "Step - 1" mais je n'arrive pas à
trouver le code.

        Quelqu'un peut-il m'aider ?

Merci d'avance

        Julie


Avatar
JulieH
Bonsoir et merci pour ton aide,

Cela fonctionne évidemment parfaitement. Mais mon exemple était
simplifié. En fait je pensais utiliser "For each c" car dans mon "If",
j'ai plusieurs autres opérations notamment de recopie. Par exemple :
c.copy c.offset(1,0)

Je ne vois pas comment intégrer cela à ton code.

Julie


JB a écrit :
Bonsoir,

For lig = 20 To 3 Step -1
If Cells(lig, 2) = "Mercredi" Then Rows(lig).Delete
Next lig

JB
http://boisgontierjacques.free.fr/

On 18 déc, 18:53, JulieH wrote:
Bonsoir à toutes et tous,

J'utilise le code suivant pour ajouter une ligne dans une liste de
jours chaque fois qu'il y a le "Mercredi".
For Each c In Range("B3:B20")
If c <> "" And c = "Mercredi" Then
c.EntireRow.Insert

Je voudrais commencer par la fin de la liste afin d'éviter que la macro
ne s'arrête au premier mercredi et ne crée des lignes sans arrêt. Je
suis persuadée qu'il faut utiliser "Step - 1" mais je n'arrive pas à
trouver le code.

Quelqu'un peut-il m'aider ?

Merci d'avance

Julie





Avatar
JB
Remplacer c par Cells(lig,2)

For lig = 20 To 3 Step -1
If Cells(lig, 2) = "Mercredi" Then
Cells(lig, 2).Copy Cells(lig, 2).Offset(1, 0)
Rows(lig).Delete
End If
Next lig

JB

On 18 déc, 19:13, JulieH wrote:
Bonsoir et merci pour ton aide,

        Cela fonctionne évidemment parfaitement. Mais mon exemp le était
simplifié. En fait je pensais utiliser "For each c" car dans mon "If",
j'ai plusieurs autres opérations notamment de recopie. Par exemple :
        c.copy c.offset(1,0)

        Je ne vois pas comment intégrer cela à ton code.

Julie

JB a écrit :



> Bonsoir,

>   For lig = 20 To 3 Step -1
>     If Cells(lig, 2) = "Mercredi" Then Rows(lig).Delete
>   Next lig

> JB
>http://boisgontierjacques.free.fr/

> On 18 déc, 18:53, JulieH wrote:
>> Bonsoir à toutes et tous,

>>         J'utilise le code suivant pour ajouter une ligne dans une liste de
>> jours chaque fois qu'il y a le "Mercredi".
>>             For Each c In Range("B3:B20")
>>              If c <> "" And c = "Mercredi" Then
>>              c.EntireRow.Insert

>>         Je voudrais commencer par la fin de la liste afin d' éviter que la macro
>> ne s'arrête au premier mercredi et ne crée des lignes sans arrêt . Je
>> suis persuadée qu'il faut utiliser "Step - 1" mais je n'arrive pas à
>> trouver le code.

>>         Quelqu'un peut-il m'aider ?

>> Merci d'avance

>>         Julie- Masquer le texte des messages précédents -

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


Avatar
michdenis
Bonjour,

Une autre approche...

'----------------------------------------
Sub tets1()
Dim Nb As Long
With Range("B3:B20")
Nb = .Cells.Count
Do While Nb > 1
With .Item(Nb)
If .Value = "Mercredi" Then
.EntireRow.Insert
Nb = Nb + 1
End If
End With
Nb = Nb - 1
Loop
End With
End Sub
'----------------------------------------



"JulieH" a écrit dans le message de groupe de discussion :
#
Bonsoir à toutes et tous,


J'utilise le code suivant pour ajouter une ligne dans une liste de
jours chaque fois qu'il y a le "Mercredi".
For Each c In Range("B3:B20")
If c <> "" And c = "Mercredi" Then
c.EntireRow.Insert

Je voudrais commencer par la fin de la liste afin d'éviter que la macro
ne s'arrête au premier mercredi et ne crée des lignes sans arrêt. Je
suis persuadée qu'il faut utiliser "Step - 1" mais je n'arrive pas à
trouver le code.

Quelqu'un peut-il m'aider ?

Merci d'avance

Julie
Avatar
JulieH
OK, cela me convient. Je n'avais jamais utilisé cela sous cette forme.

Merci à nouveau pour ton aide.

Bon week end

Julie

JB a écrit :
Remplacer c par Cells(lig,2)

For lig = 20 To 3 Step -1
If Cells(lig, 2) = "Mercredi" Then
Cells(lig, 2).Copy Cells(lig, 2).Offset(1, 0)
Rows(lig).Delete
End If
Next lig

JB

On 18 déc, 19:13, JulieH wrote:
Bonsoir et merci pour ton aide,

Cela fonctionne évidemment parfaitement. Mais mon exemple était
simplifié. En fait je pensais utiliser "For each c" car dans mon "If",
j'ai plusieurs autres opérations notamment de recopie. Par exemple :
c.copy c.offset(1,0)

Je ne vois pas comment intégrer cela à ton code.

Julie

JB a écrit :



Bonsoir,
For lig = 20 To 3 Step -1
If Cells(lig, 2) = "Mercredi" Then Rows(lig).Delete
Next lig
JB
http://boisgontierjacques.free.fr/
On 18 déc, 18:53, JulieH wrote:
Bonsoir à toutes et tous,
J'utilise le code suivant pour ajouter une ligne dans une liste de
jours chaque fois qu'il y a le "Mercredi".
For Each c In Range("B3:B20")
If c <> "" And c = "Mercredi" Then
c.EntireRow.Insert
Je voudrais commencer par la fin de la liste afin d'éviter que la macro
ne s'arrête au premier mercredi et ne crée des lignes sans arrêt. Je
suis persuadée qu'il faut utiliser "Step - 1" mais je n'arrive pas à
trouver le code.
Quelqu'un peut-il m'aider ?
Merci d'avance
Julie- Masquer le texte des messages précédents -




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





Avatar
JulieH
Bonsoir,

Merci également pour ton aide.

Julie

michdenis a écrit :
Bonjour,

Une autre approche...

'----------------------------------------
Sub tets1()
Dim Nb As Long
With Range("B3:B20")
Nb = .Cells.Count
Do While Nb > 1
With .Item(Nb)
If .Value = "Mercredi" Then
.EntireRow.Insert
Nb = Nb + 1
End If
End With
Nb = Nb - 1
Loop
End With
End Sub
'----------------------------------------



"JulieH" a écrit dans le message de groupe de discussion :
#
Bonsoir à toutes et tous,


J'utilise le code suivant pour ajouter une ligne dans une liste de
jours chaque fois qu'il y a le "Mercredi".
For Each c In Range("B3:B20")
If c <> "" And c = "Mercredi" Then
c.EntireRow.Insert

Je voudrais commencer par la fin de la liste afin d'éviter que la macro
ne s'arrête au premier mercredi et ne crée des lignes sans arrêt. Je
suis persuadée qu'il faut utiliser "Step - 1" mais je n'arrive pas à
trouver le code.

Quelqu'un peut-il m'aider ?

Merci d'avance

Julie