Imbrication boucle

Résolu/Fermé
camcam1404 Messages postés 64 Date d'inscription mardi 13 décembre 2016 Statut Membre Dernière intervention 9 septembre 2019 - Modifié par pijaku le 23/01/2017 à 10:48
camcam1404 Messages postés 64 Date d'inscription mardi 13 décembre 2016 Statut Membre Dernière intervention 9 septembre 2019 - 24 janv. 2017 à 13:27
Bonjour,

Dans le programme ci-dessous la boucle (For i=2 to Lastrow) ne fonctionne pas correctement.
Je ne comprends pas pourquoi sachant que individuellement, c'est à dire en dehors du For Each elle marche.



Sub GGS()
Dim f As Worksheet
Dim lastrow As Long
Dim i As Long

For Each f In ActiveWorkbook.Worksheets

If UCase(f.Name) Like "*DATE*" Then
           f.Range("B:B").Insert
           f.Range("C:C").Insert
           f.Rows("1:1").Insert

lastrow = f.Range("A1").End(xlDown).Row

For i = 2 To lastrow

f.Cells(i, 2) = Right(f.Cells(i, 1).Value, 4)

Next i


f.Range("C1").Value = "?"


End If

Next f


End Sub

1 réponse

ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 160
Modifié par ThauTheme le 20/01/2017 à 12:12
Bonjour Camcam, bonjour le forum,

Que vaut la variable lastrow quand tu lances la boucle ?
À plus,
ThauTheme
0
camcam1404 Messages postés 64 Date d'inscription mardi 13 décembre 2016 Statut Membre Dernière intervention 9 septembre 2019
20 janv. 2017 à 12:56
la valeur de la dernnière ligne pour chaque feuille de calcul:

lastrow = f.Range("A1").End(xlDown).Row
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310 > camcam1404 Messages postés 64 Date d'inscription mardi 13 décembre 2016 Statut Membre Dernière intervention 9 septembre 2019
Modifié par michel_m le 20/01/2017 à 14:57
bonjour

Thautheme (bonne année) te demande la valeur de lastrow

5 dollars que si A2<>"" lastrow=2... hé oui
0
ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 160 > michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023
20 janv. 2017 à 15:26
Salut Michel et Bonne Année également.

Pour atteindre la dernière cellule éditée d'une colonne je recommande plutôt :
lastrow = f.Range("A" & Application.Rows.Count).End(xlUp).Row 

à moins bien sûr d'avoir des données dans la colonne A sous ton tableau...

Sinon, si tu a des en-têtes dans la ligne 1 :
lastrow = IIf(f.Range("A2") = "", 2, f.range("A1").End(xlDown).Row)
0
camcam1404 > michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023
21 janv. 2017 à 08:54
Bonjour Michel,

Je vois pas ce que tu veux dire..
Peux tu reformuler s'il te plait ?
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310 > camcam1404
21 janv. 2017 à 12:35
Bonjour

A1 est vide suit eà ta ligne f.Rows("1:1").Insert
quand tu écris
Range("A1").End(xlDown).Row
tu demandes en fait: "regarde en descendant (xldown) la 1° ligne=égale à A1"---> 1° ligne non vide

donc si A2 n'est pas vide lastrow=2

et forcémement
For i = 2 To lastrow ---> for i=2 to 2 --> pas de boucle
0