compteur dans une boucle

chroberto

XLDnaute Nouveau
bonjour le forum,
voici la situation:
j'ai créé une macro qui extrait des données d'un fichier "commande", pour les coller dans mon fichier actuel. Dans ce dernier fichier j'ai un onglet "extraction" qui correspond à l'extraction qui vient d'êrte faite et un autre "saisie" pour copier les données à la suite des dernières déjà copiées auparavant.
ma macro insère autant de ligne qu'il y a de données à copier en partant de la première ligne vide.
seulement une fois les lignes créées, ma macro ne se positionne pas à la bonne ligne pour copier les données dans la première ligne créée?
Alors que j'ai identifier cette ligne par : thiscell=X
comment dois-je faire pour qu'il se positionne à la bonne ligne:
soit j'améliore mon code pour qu'il reconnaisse bien ma céllule "X"?
soit j'ajoute un compteur dans ma boucle d'insertion de ligne pour lui dire de remonter depuis la dernière ligne, du nombre que le compteur affichera?
pour cette solution je ne sais pas créer un compteur dans la macro. je crois que c'est du style i+1
Code:
    Sheets("saisie").Select
    [saisie].Find("*", , , , xlByRows, xlPrevious).Select
    ActiveCell.Offset(-1, -13).Select [COLOR="YellowGreen"]'c'est pr se positionner sur la colonne A[/COLOR]
    [COLOR="yellowgreen"]'première ligne vide pour insérer ldes nouvelles lignes[/COLOR]
    ThisCell = X
    [COLOR="yellowgreen"]'insertion des lignes pour saisir les commandes
    ' Début de la boucle DO loop pour insertion ligne[/COLOR]
            Sheets("extraction").Select
            Range("A2").Select
                    Do While ActiveCell <> Empty
                        Sheets("saisie.").Select
                        [saisie].Find("*", , , , xlByRows, xlPrevious).Select
                        ActiveCell.Offset(-1, -13).Select
                        Selection.EntireRow.Insert
                        [COLOR="yellowgreen"]'copie de la mise en forme de la ligne du haut[/COLOR]
                        ActiveCell.Offset(-1, 0).Rows("1:1").EntireRow.Select
                            Selection.Copy
                            ActiveCell.Offset(1, 0).Rows("1:1").EntireRow.Select
                            Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
                            SkipBlanks:=False, Transpose:=False
                            Application.CutCopyMode = False
                            Sheets("extraction").Select
                        ActiveCell.Offset(1, 0).Select
                    Loop
    [COLOR="yellowgreen"]'selection des données extraitent à copier[/COLOR]
    Range("num_extraction").Select
    Selection.Copy
    Sheets("saisie").Select
    ActiveCell(X).Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
 

chroberto

XLDnaute Nouveau
Re : compteur dans une boucle

malheureusement, ta ligne de code ne peut pas m'être utiliser grodep, car ma feuille de saisie comporte une ligne de totaux en dessous des lignes que je devrais insérer.
je joins une copie de mon fichier avec ma macro de bricolage...
merci pour ton première essai de résolution... et merci d'avance pour les prochaine
 

Pièces jointes

  • test_saisie.zip
    18.4 KB · Affichages: 33

kjin

XLDnaute Barbatruc
Re : compteur dans une boucle

Bonjour,
Bricolage tu dis
Perso rien compris de quoi doit aller où, d'autant que les champs des 2 tableaux ne correspondent pas, donc quoi insérer et où ? et pourquoi insérer ligne par ligne ?..
A+
kjin
 

chroberto

XLDnaute Nouveau
Re : compteur dans une boucle

il est peut être vrai que le fichier que j'ai mis en pièce jointe ne permettais pas de bien comprendre la situation.

Quoi qu'il en soit, j'ai réglé mon problème, en supprimant, dans ma boucle, les coordonnées de céllules pour insérer des lignes.
de cette manière la macro récupère le pointage de la dernière céllule insérée.
Encore du "BRICOLAGE"... je suis d'accord!!! mais noob oblige je fais avec mes connaissances, et je nourris l'espoire de corriger plus tard mes propres codes.
Toutefois, "kjin", je t'es mis un fichier joint avec quelques explications, et si tu lances ma macro tu pourras voir ce qu'elle réalise exactement.
(sinon il faut supprimer les lignes avec des N° dans l'onglet "suivi A.D")
PS: pourquoi insérer une ligne une par une? et bien tout simplement parce que je ne sais pas encore faire autrement ...

merci à toutes et tous pour vos conseils qui me permettent de m'améliorer... au fil ...des fils!!
 

Discussions similaires

  • Question
Microsoft 365 Code VBA
Réponses
2
Affichages
296