Comment boucler une boucle
Résolu/Fermé
Pros
-
Modifié le 15 mars 2021 à 11:21
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 - 15 mars 2021 à 11:53
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 - 15 mars 2021 à 11:53
4 réponses
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 775
13 mars 2021 à 18:31
13 mars 2021 à 18:31
Bonjour,
Sous VBA, il ne faut éviter d'utiliser ActiveSheet, ActiveCell, .Select, ... plus généralement les objets actifs.
Quelle plage de données de la Feuil4 veux tu copier vers la Feuil6 ?
Sous quelles conditions ?
Sous VBA, il ne faut éviter d'utiliser ActiveSheet, ActiveCell, .Select, ... plus généralement les objets actifs.
Quelle plage de données de la Feuil4 veux tu copier vers la Feuil6 ?
Sous quelles conditions ?
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 775
13 mars 2021 à 22:26
13 mars 2021 à 22:26
Re,
Je ne suis pas sûr que tu exprimes correctement ton besoin ...
De C13 à C78 il y a une plage de cellules sur 55 lignes
Un offset est un décalage relatif à une position de départ.
De T1 à C13 c'est un offset de 12 lignes et -17 colonnes.
Pour copier T1:T55 de Feuil 4 vers C13:C78 de Feuil6 :
Je ne suis pas sûr que tu exprimes correctement ton besoin ...
De C13 à C78 il y a une plage de cellules sur 55 lignes
Un offset est un décalage relatif à une position de départ.
De T1 à C13 c'est un offset de 12 lignes et -17 colonnes.
Pour copier T1:T55 de Feuil 4 vers C13:C78 de Feuil6 :
Option Explicit Sub Test() Worksheets("Feuil4").Range("T1:T55").Copy Destination:=Worksheets("Feuil6").Range("C13") End Sub
Bonjour patrick merci une fois de plus pour ta réaction.
J'ai un fichier excel qui contient plusieurs feuilles. Les feuilles 4 et 6 sont celles nous intéressent ici. Mon souci est le suivant
Je souhaite copier les données dans la cellule T2 de la feuille 4 puis coller dans la cellule C13 de la feuille 6. Puis aller de nouveau dans la cellule qui suit la cellule T2(T3). Copier cette valeur pour la C13 de la feuille 6. Et si cette cellule n'est pas vide, je fais un décalage de 55 ligne jusqu'à trouver une cellule vide. Puis je colle cette valeur copiée dans la feuille 4 à l'interieur. Ceci doit etre fait jusquà ce que toutes les données contenues dans le colonne T de la feuille4 soient parcourues jusqu'à la fin.
J'èspère avoir été explicite cette fois ci.
Pasez un excellent dimanche.
J'ai un fichier excel qui contient plusieurs feuilles. Les feuilles 4 et 6 sont celles nous intéressent ici. Mon souci est le suivant
Je souhaite copier les données dans la cellule T2 de la feuille 4 puis coller dans la cellule C13 de la feuille 6. Puis aller de nouveau dans la cellule qui suit la cellule T2(T3). Copier cette valeur pour la C13 de la feuille 6. Et si cette cellule n'est pas vide, je fais un décalage de 55 ligne jusqu'à trouver une cellule vide. Puis je colle cette valeur copiée dans la feuille 4 à l'interieur. Ceci doit etre fait jusquà ce que toutes les données contenues dans le colonne T de la feuille4 soient parcourues jusqu'à la fin.
J'èspère avoir été explicite cette fois ci.
Pasez un excellent dimanche.
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 775
Modifié le 14 mars 2021 à 12:14
Modifié le 14 mars 2021 à 12:14
Bonjour,
C'est pas encore suffisamment précis ....
T2 vers C13 -> Ok
T3 vers C14 -> OK
Jusqu'au Tx Vide par exemple T7 vers C18 -> Ok
Décalage de 55 lignes, on reprend en :
- T2 + 55 = T57 ?
- T7 + 55 = T62 ?
à copier vers :
- C19 ?
- C13 + 55 = C68 ?
- C18 + 55 = C73 ?
Dans la première plage T2:T56 (ou T2:T61 selon l'hypothèse) et les suivantes :
- les cellules sont-t'elles remplies sans discontinuité suivies d'une plage vide jusqu'à la fin (T56 ou T61) ?
- peut-t'il y avoir des cellules vides entre les cellules renseignées ?
Sur les 3 premières hypothèses (T57, C19, sans discontinuité) :
--
Cordialement
Patrice
Personne ne peut détenir tout le savoir, c'est pour ça qu'on le partage.
C'est pas encore suffisamment précis ....
T2 vers C13 -> Ok
T3 vers C14 -> OK
Jusqu'au Tx Vide par exemple T7 vers C18 -> Ok
Décalage de 55 lignes, on reprend en :
- T2 + 55 = T57 ?
- T7 + 55 = T62 ?
à copier vers :
- C19 ?
- C13 + 55 = C68 ?
- C18 + 55 = C73 ?
Dans la première plage T2:T56 (ou T2:T61 selon l'hypothèse) et les suivantes :
- les cellules sont-t'elles remplies sans discontinuité suivies d'une plage vide jusqu'à la fin (T56 ou T61) ?
- peut-t'il y avoir des cellules vides entre les cellules renseignées ?
Sur les 3 premières hypothèses (T57, C19, sans discontinuité) :
Option Explicit Sub Copier_F4_T_vers_F6_C13() Dim celOrg As Range 'cellule origine Dim celDst As Range 'cellule destination Dim dern_L As Long 'dernière ligne de T Dim nL_deb As Long 'numèro ligne début de plage de 55 cellules Set celOrg = Worksheets("Feuil4").Range("T2") dern_L = Worksheets("Feuil4").Cells(Rows.Count, "T").End(xlUp).Row nL_deb = celOrg.Row Set celDst = Worksheets("Feuil6").Range("C13") Do While celOrg.Row <= dern_L Do While celOrg.Value <> "" 'option sans discontinuité celDst.Value = celOrg.Value Set celOrg = celOrg.Offset(1) Set celDst = celDst.Offset(1) 'option C13, C14, ..., C18, C19, ... Loop Do While (nL_deb < celOrg.Row Or celOrg.Value = "") And celOrg.Row <= dern_L nL_deb = nL_deb + 55 Set celOrg = celOrg.EntireColumn.Cells(nL_deb, 1) 'option T57, T112, ... Loop Loop End Sub
--
Cordialement
Patrice
Personne ne peut détenir tout le savoir, c'est pour ça qu'on le partage.
Bonsoir patrice. J'ai Adapté la macra à mon besoin à savoir l'option T2>C13, T3>C68, T4>123 mais je constate un bugg
En effet , dans la feuille 4, entre les données il n'y'a pas de cellule vides. Mais par contre dans la feuille 6, entre 13 et 68,123,181... , il y'a des celles vides. L'ojectif est copier toutes les données contenues dans la colonne T:T de la feuille4 pour la feuille 6.
Voici ce que j'ai coller dans mon code.
En effet , dans la feuille 4, entre les données il n'y'a pas de cellule vides. Mais par contre dans la feuille 6, entre 13 et 68,123,181... , il y'a des celles vides. L'ojectif est copier toutes les données contenues dans la colonne T:T de la feuille4 pour la feuille 6.
Voici ce que j'ai coller dans mon code.
Option Explicit Sub Copier_F4_T_vers_F6_C13() Dim celOrg As Range 'cellule origine Dim celDst As Range 'cellule destination Dim dern_L As Long 'dernière ligne de T Dim nL_deb As Long 'numèro ligne début de plage de 55 cellules Set celOrg = Worksheets("Feuil4").Range("T2") dern_L = Worksheets("Feuil4").Cells(Rows.Count, "T").End(xlUp).Row nL_deb = celOrg.Row Set celDst = Worksheets("Feuil6").Range("C13") Do While celOrg.Row <= dern_L Do While (nL_deb < celOrg.Row Or celOrg.Value = "") And celOrg.Row <= dern_L nL_deb = nL_deb + 55 Set celOrg = celOrg.EntireColumn.Cells(nL_deb, 1) 'option T57, T112, ... Loop Loop End sub
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 775
Modifié le 15 mars 2021 à 09:23
Modifié le 15 mars 2021 à 09:23
Bonjour,
C'est pas ce que tu avais demandé au départ,
Ton problème est difficile à comprendre :
- « mon besoin à savoir l'option T2>C13, T3>C68, T4>123 »
- « mais je constate un bugg ... entre 13 et 68,123,181... , il y'a des celles vides »
Je ne vois pas comment il pourrait en être autrement : tu laisses 54 cellules vides à la copie !!!
C'est pas ce que tu avais demandé au départ,
Ton problème est difficile à comprendre :
- « mon besoin à savoir l'option T2>C13, T3>C68, T4>123 »
- « mais je constate un bugg ... entre 13 et 68,123,181... , il y'a des celles vides »
Je ne vois pas comment il pourrait en être autrement : tu laisses 54 cellules vides à la copie !!!
Pros
>
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
Modifié le 15 mars 2021 à 10:48
Modifié le 15 mars 2021 à 10:48
Bonjour patrice et merci pour ta réaction
Désolé si j'ai mal expliqué problème au depart. Je pensais que le code se comprend facilement.
Les autres cellules seront completées par une autre macro.
Désolé si j'ai mal expliqué problème au depart. Je pensais que le code se comprend facilement.
Les autres cellules seront completées par une autre macro.
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 775
>
Pros
Modifié le 15 mars 2021 à 11:53
Modifié le 15 mars 2021 à 11:53
Ce que je ne comprends pas :
- tu parles de bug,, c'est à dire d'un plantage de la macro. mais tu n'indiques pas de message d'erreur ni de ligne de code qui bugue !
- Si la macro s'exécute sans plantage, il ne s'agit pas d'un bug. C'est simplement un résultat qui ne correspond pas au résultat attendu.
- tu parles bug à propos de cellules vides « entre 13 et 68,123,181... , il y'a des celles vides », en quoi cela est-t'il anormal, que voudrais tu exactement.
Tes explications sont très confuses ...
- tu parles de bug,, c'est à dire d'un plantage de la macro. mais tu n'indiques pas de message d'erreur ni de ligne de code qui bugue !
- Si la macro s'exécute sans plantage, il ne s'agit pas d'un bug. C'est simplement un résultat qui ne correspond pas au résultat attendu.
- tu parles bug à propos de cellules vides « entre 13 et 68,123,181... , il y'a des celles vides », en quoi cela est-t'il anormal, que voudrais tu exactement.
Tes explications sont très confuses ...
13 mars 2021 à 18:44