Remonter une plage de données

Le
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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
JB
Le #20795631
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
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


JulieH
Le #20795671
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
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





JB
Le #20795761
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
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 >> 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 -


michdenis
Le #20795811
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" #
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
JulieH
Le #20795801
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
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
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 -





JulieH
Le #20795791
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" #
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



Publicité
Poster une réponse
Anonyme