Boucle qui s'arrête trop tôt

Sub Bonjour,

Grâce à certains d'entre vous, j'ai réussi à finaliser un outil de gestion à l'aide du VBA.

Celui-ci est censé lancer une Macro en boucle, qui calcul et récupère un tarif pour aller le coller dans une case, une fois fait, il reviens et recommence.

Le tout en fonction d'une liste qui se trouve dans la colonne page de la feuille ou se trouve le bouton de lancement de la Macro.

Normalement, la boucle n'est pas censée s'arrêter avant d'avoir passé toute la liste, seulement, elle s'arrête toujours au bout de 250/300 lignes ...

Je vous met le code ci-dessous :

Sub BoucleCommande()

'

' BoucleCommande Macro

Dim i As Long

Dim NombreDeFois As Long

NombreDeFois = Feuil1.Range("A" & Rows.Count).End(xlUp).Row

For i = 1 To NombreDeFois

Application.CutCopyMode = False

Selection.Copy

Sheets("Menu").Select

Range("C10").Select

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

:=False, Transpose:=False

Call Chercher_Commande

Range("J3:J5").Select

Application.CutCopyMode = False

Selection.Copy

Sheets("Feuil1").Select

Range("B1").Select

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

:=False, Transpose:=False

Range("B1").Select

Application.CutCopyMode = False

Selection.Copy

Range("G1").Select

Do

ActiveCell.Offset(1, 0).Select

Loop Until IsEmpty(ActiveCell)

ActiveSheet.Paste

Do

ActiveCell.Offset(1, 0).Select

Loop Until IsEmpty(ActiveCell)

Range(Selection, Selection.End(xlToLeft)).Select

Selection.End(xlToLeft).Select

Next i

End Sub

Merci par avance pour votre aide.
End Sub

Bonjour,

deux petites remarques :

- Merci d'utiliser les balises de codes en cliquant sur l'icone disponible dans le menu et en collant le code dans la fenêtre. Il sera plus facile à lire.
J'ai corrigé votre post.
- Pourriez-vous mettre votre version excel (2003, 2007, MAC 2011, 2019, ....) dans votre profil de compte. C'est plus facile pour celui qui vous répond.


Votre code semble réalisé avec l'enregistreur automatique d'excel.
C'est un bon début mais on a besoin de plus d'infos :

- Selection.copy : vous copiez quoi ?
- Feuil1 correspond à quel nom d'onglet ?
- call cherchercommande : le code fait quoi parce que la ligne en dessous Range(J3:J5), on ne sait pas sur quelle feuille on se trouve

Plus facile si c'est possible de voir votre fichier....

Cordialement

Salut,

Edit : J'ai pas été assez rapide

C'est quoi ça ?

        Application.CutCopyMode = False
        Selection.Copy
        Sheets("Menu").Select
        Range("C10").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
                               :=False, Transpose:=False

Il faut que tu affectes directement, et évite les select.

Feuil1.Range("C10").Value = ????.Range("???").value

Y'a quoi dans Call Chercher_Commande ?

Donc un fichier ou une bonne description de ce que tu veux faire nous est nécessaire.

Bonjour,

Désolé pour le temps de réponse, je devais modifier mon fichier car il contient des données d'entreprises (tarifs transporteurs).

Je viens de finir et voulais vous le téléverser mais il est trop volumineux ... Une idée ?

Cordialement,

Re,

Les bases de données ne peuvent faire que quelque ligne supprime le superflu.

Ou bien tente en le compressant

Sub Rebonjour,

Pour l'explication "concise" concernant vos demandes :

La macro BoucleCommande est juste censée lancer en boucle une autre Macro.

Quand à elle, la macro "chercher_commande", interroge la base de données de mon entreprise et renvoie les données de dimensionnement des produits contenu dans une commande à l'aide d'un "numéro de commande" afin d'en calculer le poids volumétrique, puis le coût, selon différents transporteurs dont les grilles tarifaires se trouvent dans des feuilles renommées du tableur... (j'espère avoir été assez précis, mais ce sera mieux avec le fichier ^^).

Dans la fameuse "Feuil1" se trouve mon "espace de test" qui contient une liste de numéros de commande en colonne A1 (d'où la boucle jusqu'à trouver un vide).

Donc (jusqu'ici), je place le curseur sur la case A1 de la Feuil1 (qui contient le premier numéro de commande de ma liste

J'actionne la Macro "BoucleCommande" puis :

  • Celle-ci copie le contenu de la cellule
  • Va dans la feuille "Menu"
  • Le colle en cellule C10 (cellule qui est lue par la macro chercher-commande)
  • Elle actionne la Macro "Chercher_commande" qui calcul les différents frais de port et reporte le tarif le plus avantageux dans la fameuse zone "J3:J5")
  • Elle copie le résultat qui a été reporté dans la cellule "J3:J5"
  • Elle retourne en "feuil1" puis colle ce résultat en colonne "G"
  • Elle descend d'une cellule
  • Retourne en colonne "A" pour copier le deuxième numéro de commande, puis :

Elle doit faire ça en boucle jusqu'à avoir traité toute la liste des numéros de commandes... Je pense que mon message sera bien plus clair une fois que vous aurez le fichier, seulement, vous ne pourrez pas lancer la macro "Chercher_Commande" car elle est censée interrogée notre BDD interne et vous renverra donc une erreur...

End Sub'

Bonjour

Pour que nous sachions ce qui se passe exactement, merci de joindre votre fichier anonymisé SVP

A+

Bonjour,

Comment anonymiser nous un fichier ?

Je crois que j'ai réussi à le compresser ...

Cordialement,

Re,

Si vous avez des données sensibles, il suffit de les remplacer avec l'utilitaire de Sébastien
https://www.excel-pratique.com/fr/utilitaires/anonymisation-donnees

A+

Ah oui ... ça je l'ai déjà fait !

Les noms des transporteurs, c'est pas grave, car ce sont des prestataires connus!

J'ai cependant modifié tous les prix (données sensibles) !

Ci-joint le fichier.

NB: n'hésitez pas à me dire s'il n'est pas corrompu car j'ai du le compresser 3 fois pour passer sous les 1MB... Pas sûr qu'il ait apprécié...

Cordialement,

Re,

Effectivement il n'a pas apprécié

image

Pas conseillé, mais dans ce cas, déposez le sur une plateforme et donnez le lien

A+

Bruno M45,

J'ai tenté mais EXCEL-PRATIQUE me l'interdit ...

En effet, il me dit que les liens de WeTransfert ne sont pas acceptés.

Re,

Oui tout à fait, mais il suffit d'indiquer le lien sans "https://"... je ne devrais pas vous le dire

Oups On a rien vu .

Alors voici une suite de caractères "aléatoires" ^^

t-m54pSS4TZY

https://we(point)tl/t-m54pSS4TZY

La partie en gras et entre parenthèses est a remplacer par le caractère du même nom "."

J'ai pas trouvé mieux ...

Re,

Vos effort seront vains, puisque votre Sub BoucleCommande() fait appel à la sub Chercher_Commande qui elle même fait appel à une requête

Comme nous n'avons pas cette BdD...

En revanche la boucle sans l'appel à cette sub fonctionne bien jusqu'à la dernière ligne

Bonne soirée

Je me doutais bien que ça allait bloquer ... cependant, est-ce normal que la boucle s'arrête sans erreur de deboguage et n'aille pas jusqu'au bout ?

Merci pour votre suivi en tout cas , un modo au top :p

Edit: la boucle s'arrête à chaque fois au bout de 252 lignes calculées ! je viens de faire le test!

Re,

Ce n'est pas ce que vous voulez...
mais vous calculez votre nombre de fois sur la feuille "TARIF_ZONE" qui compte 252 lignes

A+

Ah bon ? Mais dans le VBA la ligne de code est pourtant bien la suivante :

NombreDeFois = Feuil1.Range("A" & Rows.Count).End(xlUp).Row

Je demande bien Feuil1...

Je viens d'effectuer un test en changeant l'appel de la macro qui exécute la requête SQL par une macro qui fait juste un copié collé et le résultat est le même :

252 lignes calculées ... Il semble bien y avoir un problème avec ce nombre de lignes ... Mais je ne comprends pas lequel.

Voici le fichier actualisé :

https://we(point)tl/t-ELEuNII6yr

PS: Merci énormément d'essayer de m'aider malgré mon amateurisme et mon fichier bancale ^^

Re,

Je n'ai pas téléchargé le dernier fichier, mais je crois que j'ai compris votre erreur

Vous semblez confondre

NombreDeFois = Feuil1.Range("A" & Rows.Count).End(xlUp).Row

Qui fait référence à l'objet "Feuil1" du projet VBA

image

et

NombreDeFois = Sheets("Feuil1").Range("A" & Rows.Count).End(xlUp).Row

Qui fait référence à la feuille nommée

image

Utilisez le dernier code et vous verrez

A+

Rechercher des sujets similaires à "boucle qui arrete trop tot"