Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

boucle For k = 1 To 7583 Step 19

  • Initiateur de la discussion Initiateur de la discussion JBARBE
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

JBARBE

XLDnaute Barbatruc
Bonjour,🙂

J'ai effectué cette macro pour récupérer des données sur une ligne et la reporter sur une ligne différente exemple : cells(3,1) pour cells ( 1,10) !!!

Sub Totaux()
Dim j, k, i As Long
Application.ScreenUpdating = False
Sheets("Saisie").Select
Cells(2, 1).Select
For k = 1 To 7583 Step 19
For j = 1 To 7583 Step 19

If Cells(j + 17, 1).Value <> "" And Cells(j + 3, 9).Value = "" Then
Cells(2, 10).Select
For i = 1 To 400
If Cells(i + 1, 10).Value = Cells(j + 3, 1) Then
Cells(i + 1, 11).Value = Cells(j + 17, 1)
Cells(i + 1, 12).Value = Cells(j + 17, 3)
Cells(i + 1, 13).Value = Cells(j + 17, 5)
Cells(i + 1, 14).Value = Cells(j + 17, 7)
Cells(i + 1, 15).Value = Cells(j + 18, 7)
Exit For
Else
Cells(i + 2, 10).Select
End If
Next i
Cells(j + 3, 9).Value = Cells(i + 1, 10)
Exit For
Else
Cells(j + 20, 1).Select
End If
Next j
Cells(2, 1).Select
Next k
Application.ScreenUpdating = True
End Sub


Cette écriture ne me convient pas malgré qu'elle fonctionne parce que elle effectue beaucoup trop de boucles !!!

Merci de me trouver une solution plus simple ( je suis novice)

excel ( 2003)
 
Re : boucle For k = 1 To 7583 Step 19

Bonjour et bienvenu(e) sur xld,
A première vue, "k" n'intervenant pas dans ta boucle on peut déjà commencer par supprimmer ça sinon tu doubles la boucle ?!
Ensuite, si tu exprimmais en français dans le texte ce que ta boucle est sensée tester, ce serait déjà plus compréhensible pour nous
QQ données fictives dans un fichier seraient bienvenues
A+
kjin
 
Re : boucle For k = 1 To 7583 Step 19

Bonjour JBARBE, salut Kjin, salut Pascal,

Sauf erreur, le code ci-dessous devrait faire la même chose, mais en accord avec Kjin, je ne comprends pas bien la "Chose" et un exemple serait intéressant.

La boucle K ne sert effectivement à rien ni les cells(x,x).select.
En mettant la boucle de 2 à 401, on peut remplacer les i+1 par i.

ce qui donne:

Code:
Sub Totaux()
Dim j, k, i As Long
Application.ScreenUpdating = False
Sheets("Saisie").Select
For j = 1 To 7583 Step 19
        If Cells(j + 17, 1).Value <> "" And Cells(j + 3, 9).Value = "" Then
            For i = 2 To 401
                If Cells(i, 10).Value = Cells(j + 3, 1) Then
                    Cells(i, 11).Value = Cells(j + 17, 1)
                    Cells(i, 12).Value = Cells(j + 17, 3)
                    Cells(i, 13).Value = Cells(j + 17, 5)
                    Cells(i, 14).Value = Cells(j + 17, 7)
                    Cells(i, 15).Value = Cells(j + 18, 7)
                    Exit For
                End If
            Next i
        Cells(j + 3, 9).Value = Cells(i, 10)
    Exit For
        End If
    Next j
Application.ScreenUpdating = True
End Sub

@+

Gael

PS: le nombre 7583 ne me paraît pas cohérent avec le step 19 il faudrait mettre 7582 (399*19 +1) ou 7601 (400*19 +1).

Gael
 
Dernière édition:
Re : boucle For k = 1 To 7583 Step 19

Merci à vous trois pour vos réponses!

C'est la galère pour moi depuis plusieurs jours sur cette écrire ! je suis vraiment une brelle !

Voici la description de mon projet :

Sub Totaux()
Dim j, k, i As Long > déclaration variables
Application.ScreenUpdating = False > permet de stabiliser l'écran
Sheets("Saisie").Select > feuille Saisie selectionnée
Cells(2, 1).Select > cellule ligne 2 colonne 1 selectionnée
For k = 1 To 7583 Step 19 > boucle de 400 ligne dirigeante "" permettant de réinitialiser les boucles pour que i & j puisse être remis à sa valeur initiale ""
For j = 1 To 7583 Step 19 > boucle de 400 ligne soumise

If Cells(j + 17, 1).Value <> "" And Cells(j + 3, 9).Value = "" Then > si cellule ligne i + 17 lignes colonne 1 valeur différent de vide et cellule ligne i + 17 lignes colonne 1 valeur ligne j + 3 colonne 9 valeur égale vide
Cells(2, 10).Select > cellule (ligne 2, colonne 10) selectionnée "" changement de ligne & et colonne ""
For i = 1 To 400 > boucle jusqu'à 400 lignes
If Cells(i + 1, 10).Value = Cells(j + 3, 1) Then >> si cellule i + 1 cellule, colonne 10 valeur égale cellule J + 17 lignes colonne 1
Cells(i + 1, 11).Value = Cells(j + 17, 1) >>cellule i + 1 ligne colonne 11 valeur égale cellule j + 17 lignes colonne 1
Cells(i + 1, 12).Value = Cells(j + 17, 3)>>>"""""" idem colonne 3
Cells(i + 1, 13).Value = Cells(j + 17, 5)>>>"""""" idem colonne 5
Cells(i + 1, 14).Value = Cells(j + 17, 7)>>>"""""" idem colonne 7
Cells(i + 1, 15).Value = Cells(j + 18, 7)>>>"""""" idem ligne j + 18 colonne 7
Exit For>>> sort de la boucle
Else>>>sinon
Cells(i + 2, 10).Select>>>>>>>>>cellule i + 2 ligne , colonne 10 selectionné
End If >>>>>>fin si
Next i>>> fin boucle i
Cells(j + 3, 9).Value = Cells(i + 1, 10)>>>cellule j + 3 lignes, colonne 9 . valeur égale cellule i + 1ligne colonne 10
Exit For >>>>>><<fin boucle
Else >>>>>>>sinon
Cells(j + 20, 1).Select>>>>>>>>> cellule j + 20 lignes colonne 1 selectionnée
End If>>>> fin si
Next j>>>>>fin boucle j
Cells(2, 1).Select>>>cellule ligne 2 colonne 1 selectionnée de boucle k
Next k >>><fin boucle dirigeante k
Application.ScreenUpdating = True
End Sub

En ce qui concerne ton projet "Gael" sans vouloir t' offenser je suis pas bon :

Sub Totaux()
Dim j, k, i As Long
Application.ScreenUpdating = False
Sheets("Saisie").Select
For j = 1 To 7583 Step 19
If Cells(j + 17, 1).Value <> "" And Cells(j + 3, 9).Value = "" Then >>>la macro s'arrête à la ligne 42 car la colonne 1 et pleine et la ligne 4 et colonne K et vide
For i = 2 To 401
If Cells(i, 10).Value = Cells(j + 3, 1) >>>>Then remplissage des cellules
Cells(i, 11).Value = Cells(j + 17, 1)
Cells(i, 12).Value = Cells(j + 17, 3)
Cells(i, 13).Value = Cells(j + 17, 5)
Cells(i, 14).Value = Cells(j + 17, 7)
Cells(i, 15).Value = Cells(j + 18, 7)
Exit For >>>MAIS SORTIE TOTALE des boucles ( i & j) & fin de la procédure alors que la boucle j ("For j = 1 To 7583 Step 19") jusqu'à 400 lignes n'est pas finie
End If
Next i
Cells(j + 3, 9).Value = Cells(i, 10)
Exit For
End If
Next j
Application.ScreenUpdating = True
End Sub

Ainsi donc j'ai creé cette boucle k supplémentaire pour que j et i ne sort pas la macro puisqu'elle n'est pas à l'intérieur de j & i !!!

Mais l'inconvénient c'est qu'elle repart du début & évite la cellule pleine """Cells(j + 3, 9).Value = "">>><""" qui a été remplie avec la dernière boucle !

C'est complexe et même trop !!!
 
Re : boucle For k = 1 To 7583 Step 19

Re,

Ne t'inquiète pas, je ne me sens absolument pas offensé même si j'ai fait une erreur.

La sortie de boucle "Exit For" sort de la boucle en cours et te ramène à la boucle de niveau supérieur, ce n'est pas une sortie totale de l'ensemble des boucles.

Dans ton code, il y a une sortie totale à cause du deuxième "Exit for":

Code:
[COLOR=blue]Exit For>>> sort de la boucle i[/COLOR]
Else>>>sinon
Cells(i + 2, 10).Select>>>>>>>>>cellule i + 2 ligne , colonne 10 selectionné
End If >>>>>>fin si
Next i>>> fin boucle i
Cells(j + 3, 9).Value = Cells(i + 1, 10)>>>cellule j + 3 lignes, colonne 9 . valeur égale cellule i + 1ligne colonne 10
[COLOR=red]Exit For >>>>>><<fin boucle j[/COLOR]
Else >>>>>>>sinon

Donc, si tu enlèves ce deuxième "exit for", la boucle K devient inutile.

Pour les select, je persiste à penser qu'ils ne servent à rien puisque tu n'utilises jamais "Activecell" ou toute autre instruction qui se sert de la cellule en cours.

Mais, je peux facilement me tromper puisque, sans exemple précis, on ne peut que raisonner sans tester le fonctionnement.

@+

Gael
 
Re : boucle For k = 1 To 7583 Step 19

Gael tu es génial ça marche !!!!🙂🙂

J'ai trop travaillé sur ce truc, ce qui ne me permettait pas de voir les problèmes!

Je suis nouveau sur ce site très fréquenté et j'en suis heureux car tout mes petits programmes me rendent bien service !

Certes, il y a une autre façon de programmé VBA, mais j'ai appris comme cela avec les bouquins de VBA excel 95 alors j'ai des petits défauts !

Quant à mettre Cells(1,9) sans ".select " cela ne marche pas !!

Je ne sais pas si cette programmation va être accepté par Open Office ! enfin je vais bien voir !

Bonne soirée !
 
Re : boucle For k = 1 To 7583 Step 19

Re,

Désolé, je suis un peu têtu, mais j'aime bien comprendre.

As-tu essayé directement le code que je t'ai envoyé (en enlevant le deuxième exit for). il devrait marcher.

Il ne faut pas supprimer le ".select" mais toute l'instruction cells(x,x).select. Je ne vois pas l'intérêt de se positionner sur une cellule dont on n'utilise ni la valeur, ni les numéros de ligne ou colonne.

@+

Gael
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
925
Réponses
4
Affichages
742
Réponses
4
Affichages
284
Réponses
15
Affichages
812
Réponses
8
Affichages
400
Réponses
8
Affichages
797
Réponses
2
Affichages
258
  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
462
Réponses
2
Affichages
528
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…