Boucle sur la dernière ligne non vide
Résolu/Fermé
Ecam39
Messages postés
286
Date d'inscription
jeudi 12 janvier 2012
Statut
Membre
Dernière intervention
16 mars 2024
-
14 nov. 2013 à 09:19
Ecam39 Messages postés 286 Date d'inscription jeudi 12 janvier 2012 Statut Membre Dernière intervention 16 mars 2024 - 16 nov. 2013 à 13:39
Ecam39 Messages postés 286 Date d'inscription jeudi 12 janvier 2012 Statut Membre Dernière intervention 16 mars 2024 - 16 nov. 2013 à 13:39
A voir également:
- Boucle sur la dernière ligne non vide
- Aller à la ligne excel - Guide
- Mon pc s'allume et s'éteint en boucle - Forum Matériel & Système
- Ligne occupée - Forum SFR
- Hors ligne instagram - Guide
- Vente en ligne particulier - Guide
8 réponses
f894009
Messages postés
17185
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
15 avril 2024
1 701
14 nov. 2013 à 09:24
14 nov. 2013 à 09:24
Bonjour,
Vous pouvez ouvrir une inputbox au debut de votre macro pour entrer le numero de ligne de debut de votre boucle.
Vous pouvez ouvrir une inputbox au debut de votre macro pour entrer le numero de ligne de debut de votre boucle.
Ecam39
Messages postés
286
Date d'inscription
jeudi 12 janvier 2012
Statut
Membre
Dernière intervention
16 mars 2024
9
Modifié par Ecam39 le 14/11/2013 à 09:35
Modifié par Ecam39 le 14/11/2013 à 09:35
Le soucis c'est que ça rajoute une saisie (ce n'est pas moi qui alimente le fichier). Et déjà faire une macro c'est limite pour eux alors si ils doivent saisir un N° de ligne je me fais plumer :)
Il n'existe pas un autre moyen à renseigner directement dans la boucle ?
Voici ma boucle :
L'idéal serait de transformer le Range("E2") en variable non ?
Il n'existe pas un autre moyen à renseigner directement dans la boucle ?
Voici ma boucle :
'Commencer la boucle en colonne E
For ecart_de_stock = 2 To Range("E2").End(xlDown).Row
L'idéal serait de transformer le Range("E2") en variable non ?
f894009
Messages postés
17185
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
15 avril 2024
1 701
14 nov. 2013 à 09:46
14 nov. 2013 à 09:46
Re beau volatil (si ils doivent saisir un N° de ligne je me fais plumer :)
Si vous avez un critere qui permet de pouvoir parametrer le debut de la boucle c'est ok, mais lequel est-ce ????
Si vous avez un critere qui permet de pouvoir parametrer le debut de la boucle c'est ok, mais lequel est-ce ????
Ecam39
Messages postés
286
Date d'inscription
jeudi 12 janvier 2012
Statut
Membre
Dernière intervention
16 mars 2024
9
14 nov. 2013 à 10:40
14 nov. 2013 à 10:40
le critère de la boucle c'est qu'il effectue un calcul sur toutes les lignes ( d'une colonne nommée ) non vides.
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 204
14 nov. 2013 à 10:32
14 nov. 2013 à 10:32
Bonjour,
Dans les boucles For Next, il y a une colonne qui reçoit le résultat d'un calcul. Peut être qu'en testant la dernière cellule renseignée pour commencer la boucle du For Next ...
Admettons que le calcul soit en colonne H:
Dans les boucles For Next, il y a une colonne qui reçoit le résultat d'un calcul. Peut être qu'en testant la dernière cellule renseignée pour commencer la boucle du For Next ...
Admettons que le calcul soit en colonne H:
Dim DerLig As Long
DerLig = Range("H" & Rows.Count).End(xlUp).Row
For ecart_de_stock = DerLig to Range("E2").End(xlDown).Row
....
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
f894009
Messages postés
17185
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
15 avril 2024
1 701
14 nov. 2013 à 11:15
14 nov. 2013 à 11:15
Bonjour Polux31,
il semble que Ecam39 n'a pas vue votre message et dans la reponse qu'il me fait, il n'y pas de critere pour donner une solution.
Ecam39,
y a t-il une colonne avec une cellule qui puisse donner le debut du prochain calcul ???
il semble que Ecam39 n'a pas vue votre message et dans la reponse qu'il me fait, il n'y pas de critere pour donner une solution.
Ecam39,
y a t-il une colonne avec une cellule qui puisse donner le debut du prochain calcul ???
Ecam39
Messages postés
286
Date d'inscription
jeudi 12 janvier 2012
Statut
Membre
Dernière intervention
16 mars 2024
9
14 nov. 2013 à 14:43
14 nov. 2013 à 14:43
Dans la colonne E, la boucle démarre avec une fonction SI :
Si la colonne E est non vide, alors j'effectue un calcul en colonne F.
Est ce la réponse attendu ?
Si la colonne E est non vide, alors j'effectue un calcul en colonne F.
Est ce la réponse attendu ?
f894009
Messages postés
17185
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
15 avril 2024
1 701
14 nov. 2013 à 16:01
14 nov. 2013 à 16:01
Re,
Presque, relisez la proposition de Polux31 et voyez si cela correspond a votre contexte.
Presque, relisez la proposition de Polux31 et voyez si cela correspond a votre contexte.
Ecam39
Messages postés
286
Date d'inscription
jeudi 12 janvier 2012
Statut
Membre
Dernière intervention
16 mars 2024
9
15 nov. 2013 à 13:49
15 nov. 2013 à 13:49
je l'ai essayé mais j'ai planté le fichier -_-
f894009
Messages postés
17185
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
15 avril 2024
1 701
15 nov. 2013 à 14:16
15 nov. 2013 à 14:16
Bonjour,
Desole...
Mais est-ce que le principe est bon ??? Pour reduire le temps d'execution, il faut quelque chose qui indique que la prochaine boucle debutera a telle ligne
Desole...
Mais est-ce que le principe est bon ??? Pour reduire le temps d'execution, il faut quelque chose qui indique que la prochaine boucle debutera a telle ligne
Ecam39
Messages postés
286
Date d'inscription
jeudi 12 janvier 2012
Statut
Membre
Dernière intervention
16 mars 2024
9
15 nov. 2013 à 15:21
15 nov. 2013 à 15:21
Je pense que ta solution est juste, c'est moi qui n'est pas tout mis (je ne maîtrise pas encore très bien le vba).
Le quelque chose qu'il faut donner, je ne sais pas du tout ce que je dois mettre. Peut être les coordonnées où se trouve la souris ?
Le quelque chose qu'il faut donner, je ne sais pas du tout ce que je dois mettre. Peut être les coordonnées où se trouve la souris ?
f894009
Messages postés
17185
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
15 avril 2024
1 701
Modifié par f894009 le 15/11/2013 à 15:56
Modifié par f894009 le 15/11/2013 à 15:56
Re,
Coordonnees souris, pas top, mais un double click sur la cellule de depart pour la boucle, si y a pas d'autre moyen, c'est bon.
code a mettre dans le VBA de la feuille, adaptez la colonne
Coordonnees souris, pas top, mais un double click sur la cellule de depart pour la boucle, si y a pas d'autre moyen, c'est bon.
code a mettre dans le VBA de la feuille, adaptez la colonne
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Application.Intersect(Target, Range("E:E")) Is Nothing Then
Cancel = True
Depart = Target.Row
DerLig = Range("E" & Rows.Count).End(xlUp).Row
For ecart_de_stock = Depart To DerLig
'code de calcul
Next ecart_de_stock
End If
End Sub
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 744
15 nov. 2013 à 16:01
15 nov. 2013 à 16:01
Bonjour,
Excusez l'incruste.
1000 lignes -> 1 minute...
Comme il s'agit de la copie d'une formule, as tu essayé la méthode AutoFill (recopie de formule) plutôt qu'une boucle?
Un peu comme ceci :
Excusez l'incruste.
1000 lignes -> 1 minute...
Comme il s'agit de la copie d'une formule, as tu essayé la méthode AutoFill (recopie de formule) plutôt qu'une boucle?
Un peu comme ceci :
Sub Test()
Dim DrLigColE As Long, DrLigColF As Long
DrLigColE = Range("E" & Rows.Count).End(xlUp).Row
DrLigColF = Range("F" & Rows.Count).End(xlUp).Row
Range("F" & DrLigColF).AutoFill Destination:=Range("F" & DrLigColF & ":F" & DrLigColE), Type:=xlFillDefault
End Sub
f894009
Messages postés
17185
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
15 avril 2024
1 701
15 nov. 2013 à 19:00
15 nov. 2013 à 19:00
Bonjour,
Savons pas si c'est une formule, mais toute solution est intéressante.
Savons pas si c'est une formule, mais toute solution est intéressante.
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 204
15 nov. 2013 à 20:29
15 nov. 2013 à 20:29
Salut,
Il y a des conditions dans la boucle pour appliquer les formules ...
Il y a des conditions dans la boucle pour appliquer les formules ...
Ecam39
Messages postés
286
Date d'inscription
jeudi 12 janvier 2012
Statut
Membre
Dernière intervention
16 mars 2024
9
16 nov. 2013 à 13:39
16 nov. 2013 à 13:39
Bonjour,
voici ma boucle (avec les conditions de calcul) :
'Dans la boucle, effectuer le calcul selon la condition
If Not IsEmpty(Cells(ecart_de_stock, 5)) Then
'Définir la date du jour pour le nouvel inventaire
If Not IsEmpty(Cells(ecart_de_stock, 3)) And Cells(ecart_de_stock, 1) = "" Then
Cells(ecart_de_stock, 1) = Date
Else
End If
'Définir le mois en fonction de la date de saisie
Cells(ecart_de_stock, 2) = Month(Cells(ecart_de_stock, 1))
'Afficher 0 ou 1 en fonction de l'écart d'emplacement
If Cells(ecart_de_stock, 4) - Cells(ecart_de_stock, 5) = 0 Then
Cells(ecart_de_stock, 6) = 1
Else
Cells(ecart_de_stock, 6) = 0
End If
'Afficher l'ecart des bobines entre le stock physique et informatique, sans signe
Cells(ecart_de_stock, 7) = Abs(Cells(ecart_de_stock, 4) - Cells(ecart_de_stock, 5))
'Calculer un écart avec une division par 0
If Cells(ecart_de_stock, 4) > 0 Then
'Effectuer le calcul en % de l'écart des bobines
Cells(ecart_de_stock, 8) = Abs(1 - (Cells(ecart_de_stock, 7) / Cells(ecart_de_stock, 4)))
Else
'Valeur de 100% par défaut si le stock physique et info sont vides
If Cells(ecart_de_stock, 4) = 0 And Cells(ecart_de_stock, 5) = 0 Then
Cells(ecart_de_stock, 8) = 1
Else
'Valeur de 0% par défaut si il y a un écart entre le st info et physique
If Cells(ecart_de_stock, 4) <> Cells(ecart_de_stock, 5) Then
Cells(ecart_de_stock, 8) = 0
Else
End If
End If
End If
End If
voici ma boucle (avec les conditions de calcul) :
'Dans la boucle, effectuer le calcul selon la condition
If Not IsEmpty(Cells(ecart_de_stock, 5)) Then
'Définir la date du jour pour le nouvel inventaire
If Not IsEmpty(Cells(ecart_de_stock, 3)) And Cells(ecart_de_stock, 1) = "" Then
Cells(ecart_de_stock, 1) = Date
Else
End If
'Définir le mois en fonction de la date de saisie
Cells(ecart_de_stock, 2) = Month(Cells(ecart_de_stock, 1))
'Afficher 0 ou 1 en fonction de l'écart d'emplacement
If Cells(ecart_de_stock, 4) - Cells(ecart_de_stock, 5) = 0 Then
Cells(ecart_de_stock, 6) = 1
Else
Cells(ecart_de_stock, 6) = 0
End If
'Afficher l'ecart des bobines entre le stock physique et informatique, sans signe
Cells(ecart_de_stock, 7) = Abs(Cells(ecart_de_stock, 4) - Cells(ecart_de_stock, 5))
'Calculer un écart avec une division par 0
If Cells(ecart_de_stock, 4) > 0 Then
'Effectuer le calcul en % de l'écart des bobines
Cells(ecart_de_stock, 8) = Abs(1 - (Cells(ecart_de_stock, 7) / Cells(ecart_de_stock, 4)))
Else
'Valeur de 100% par défaut si le stock physique et info sont vides
If Cells(ecart_de_stock, 4) = 0 And Cells(ecart_de_stock, 5) = 0 Then
Cells(ecart_de_stock, 8) = 1
Else
'Valeur de 0% par défaut si il y a un écart entre le st info et physique
If Cells(ecart_de_stock, 4) <> Cells(ecart_de_stock, 5) Then
Cells(ecart_de_stock, 8) = 0
Else
End If
End If
End If
End If