merci Stéphane pour ce cours très intéressant sur les boucles For
4 жыл бұрын
Je vous en prie Laurence. Je vous remercie également pour ce message en retour.
@franckmaniacs257511 ай бұрын
Bonjour, merci pour ces différents cours très instructif et dont les exemples sont très appréciable pour bien assimiler le processus. Je continue mon apprentissage pour arriver à créer un tirage de ronde suisse automatisé en fonction du classement. Encore beaucoup de chose à apprendre avant mais je ne désespère pas d'y arriver en partant de zéro ou plus exactement ce que je découvre dans vos vidéos. 👍
11 ай бұрын
Bonjour Franck, je vous remercie beaucoup pour votre intérêt. Les séries que je propose en VBA sont très complètes donc je ne doute pas que vous parviendrez à vos fins à l'issue.
@Nono-mm6zp7 жыл бұрын
Bonjour Stéphane, voila une semaine que je travail VBA, je débute mais grâce à vous j'ai réussi à faire mon 1ier programme VBA. Merci beaucoup :)
7 жыл бұрын
Merci à vous Nono 1975 d'avoir pris le temps de faire un message. Ce genre de retour est très gratifiant.
@Nono-mm6zp7 жыл бұрын
Oui c'est gratifiant , je comprends, vous devriez donner de vrai cours, vous avez une voie excellente pour travailler.
7 жыл бұрын
Merci infiniment. J'en donne en effet, quasiment au quotidien d'ailleurs.
@sumaililpatient13094 жыл бұрын
l’explication est nettement claire, c'est plus que génial, merci beaucoup
4 жыл бұрын
Merci infiniment pour ce message sumaili lpatient.
@essamdiabdelaziz95012 жыл бұрын
Grand Merci pour vos efforts louables et vos explications claires.
2 жыл бұрын
C'est un plaisir Abdelaziz. Merci beaucoup pour ce message.
@GeorgeBander8 жыл бұрын
Bonjour Cher Professeur ! Je me suis mis à l'ouvrage, et refait totalement l'exercice, (je suis très bon...). J'en ai refait un ensuite à ma façon, et j'y suis parvenu !! Je suis hyper content !!!! Je vous souhaite une bonne continuation et une excellente journée ! Merci pour tous !
8 жыл бұрын
Bonsoir George, je n'en doutais pas ! D'où venait cette erreur 400, était ce dû, par le parcours d'une boucle à l'affectation d'une cellule avec un indice de ligne ou de colonne à 0 ?
@GeorgeBander8 жыл бұрын
Oui, tout à fait exact ! J'avais affecté un mauvais indice, d'ou erreur à chaque fois !! Pas toujours facile le VBA, il fonctionne très bien, mais une simple "virgule" fait tout rater parfois !! Dur dur....!! Mais cela est super quand même...!! Bonne soirée cher Professeur !!
8 жыл бұрын
Le code réplique exactement ce qu'on lui dit de faire. Pas évident parfois de s'apercevoir qu'on l'induit en erreur tellement la procédure semble logique. Personnellement, je teste chaque fragment de code avant de poursuivre le programme ce qui ne m'empêche pas parfois de perdre du temps pour résoudre l'erreur improbable générée. Merci à vous George et je vous souhaite une très bon Week End
@pierrotthesoft5 жыл бұрын
merci pour cette formation ils nous aident plus, merci encore
5 жыл бұрын
Avec plaisir Pierrot. Merci à vous pour ce message en retour.
@abouomarmaghribi90738 жыл бұрын
vraiment j'ai adoré cette vidéo bon courage Monsieur Stéphane merci beaucoup
8 жыл бұрын
Oui ici il s'agit d'automatiser le code et les actions grâce aux boucles de programmation en VBA Excel. Le fait de pouvoir réaliser une mise en forme automatique par détection systématique des bornes de tous les tableaux d'une feuille permet de montrer la puissance et l'intérêt de ces instructions en terme d'automatisation et de gain de temps. C'est moi qui vous remercie Abouomar Maghribi pour avoir pris le temps de faire un message.
@kawther26114 жыл бұрын
vraiment merci beaucoup l’explication est très bien et tous vous vidéos
4 жыл бұрын
C'est un plaisir Kaw Ther. Merci beaucoup pour cet agréable message en retour.
@Salyanov54 жыл бұрын
Fantastique ! Il suffit (me semble-t-il) d'écrire un code similaire dans un module à part, de sorte à pouvoir mettre en forme rapidement tous ses nouveaux tableaux (quel que soit le fichier Excel). Énorme gain de temps lorsque l'on doit souvent créer de nouveaux tableaux. Un tout grand merci.
4 жыл бұрын
Oui parfaitement Marcus dans le modèle Excel Personal.xlsb. Le Gain de temps, je vous le confirme. C'est exactement le but de la manœuvre. Merci à vous.
@robertodamian75443 жыл бұрын
you probably dont care but does any of you know a method to get back into an Instagram account?? I was stupid forgot the account password. I would appreciate any tricks you can offer me!
@calvinrocco45053 жыл бұрын
@Roberto Damian Instablaster =)
@robertodamian75443 жыл бұрын
@Calvin Rocco thanks for your reply. I got to the site through google and im in the hacking process now. Looks like it's gonna take quite some time so I will get back to you later when my account password hopefully is recovered.
@robertodamian75443 жыл бұрын
@Calvin Rocco it worked and I finally got access to my account again. Im so happy! Thank you so much, you really help me out !
@lebossedesbosse94844 жыл бұрын
facile a comprendre .Merci
4 жыл бұрын
C'est un plaisir Konan. Merci pour ce message.
@raoultati91642 жыл бұрын
Rebonjour Stéphane. Je vous serai gré de bien vouloir donner suite à ma demande dès vous serez en mesure de le faire. Merci!
2 жыл бұрын
Rebonjour Raoul. Je vous ai répondu.
@michelcarrere6445 жыл бұрын
je suis entrain de faire votre tuto,et la minute 15 quand il s'agit de mettre la couleur verte j'ai un message d'erreur(propriété ou méthode non géré par cet objet) et je suis coincer si vous pouviez éclaire ma lanterne je vous en serrais très reconnaissant .merci pour vos vidéos qui me font progresser par votre approche très détailler.
5 жыл бұрын
Bonjour Michel et merci pour votre message. Il doit y avoir un souci dans le nom de l'objet que vous exploitez ou de des propriétés. Je vous invite à consulter la formation détaillée à cette adresse : www.bonbache.fr/boucles-for-next-en-vba-excel-pour-traitements-automatises-125.html Tout le code y est donné.
@HugolinPerdriau2 жыл бұрын
Bonjour, tout d'abords je souhaite vous remercier pour ces vidéos qui sont bien plus clair que des livres de cours. Lorsque je souhaite lancer le programme pour mettre en forme les en tête de tableau qui ce trouve environ a la 14ème minutes je me retrouve avec une cette erreur : "erreur d'exécution 1004" "Erreur définie par l'application ou par l'objet" J'ai chercher d'où provient cette erreur mais je ne trouve pas auriez vous une idée d'où cela peut venir ? Encore merci pour les vidéo.
2 жыл бұрын
Bonjour Hugolin. Merci pour ce message. Ce type d'erreur intervient principalement lors d'un conflit système a priori indépendamment du code que vous développez, dans la mesure ou vous avez bien déclaré et typé vos variables en suivant la procédure que je propose dans le pas à pas détaillé : www.bonbache.fr/boucles-for-next-en-vba-excel-pour-traitements-automatises-125.html Des guides sont proposés sur le Web. Je ne pourrais vous en dire plus sans être directement confronté au cas : fr.repairmsexcel.com/blog/comment-reparer-une-erreur-dexecution-1004 help.xlstat.com/fr/6452-erreur-dexecution-1004-lacces-par-programme-au-projet
@laurentblaevoet27284 жыл бұрын
Bonjour ! j'aimerais savoir si le langage VBA fonctionne avec "OpenOffice" car je n'ai plus excel ! j'avais une version (gratuite) sur un vieux PC (qui à rendu l'âme) et pour l'instant pas les moyens financier de l'acheter, j'ai découvert il y à quelques jours vos "tutos" que je trouve vraiment bien ! c'est bien expliqué ! je ne suis pas dans le domaine ! et j'arrive à comprendre facilement ! je me servais beaucoup d'Excel pour mes statistiques ! j'avais un programme VBA qu'un ancien collègue de travail m'avait créé en 2008 ! j'ai une sauvegarde mais je ne sais pas comment faire pour qu'elle fonctionne sur Openoffice ! encore un grand merci pour ce que vous faites !
4 жыл бұрын
Bonjour Laurent. Votre message est un réel plaisir et je vous remercie beaucoup pour ces compliments. Malheureusement, Microsoft est propriétaire du VBA, donc il va de soi que les versions libres et openOffice ne le proposent pas. Encore merci pour votre attention.
@loicbelloy24794 жыл бұрын
Bonjour, Merci pour toutes ces vidéos très claires J'ai une petite question. Pourquoi la variable 'Ligne' est compris comme une Ligne (Row) sans être déclaré en tant que telle? Le mot ligne est connu par VBA?
4 жыл бұрын
Bonjour Loïc. La variable Ligne n'est pas interprétée comme un objet Row soit une ligne en tant que telle. Elle est déclarée comme un entier. Ce sont tous les numéros de ligne qu'elle sert à passer en revue.
@loicbelloy24794 жыл бұрын
@ merci de cette réponse rapide. Mais je ne comprends pas comment est compris que Ligne passe les lignes en revue et pas autre chose...?
4 жыл бұрын
Ligne est une variable. Cette valeur incrémentée est passée à l'objet Cells : Cells(ligne,colonne). L'objet Cells désigne une cellule. Avec ces indices progressifs, ce sont toutes les cellules ciblées qui sont parcourues.
@alexandredecoster1586 Жыл бұрын
bonjour je cherche à mettre des barre de données dans des cellules suivant les valeurs minimum et maximum qui varient suivant chaque ligne comment faire une macro VBA?
Жыл бұрын
Bonjour Alexandre. Vous pouvez peut être essayer simplement d'appliquer des graphiques SparkLine dans vos cellules depuis le ruban Insertion.
@despierresetdubois38286 жыл бұрын
J'ai une petite info ou astuce que j'ai mise sur mon fichier pour revenir à l'état d'origine sans devoir prendre le pinceau de mise en forme et qui préserve l'état des cellules (pourcent, monétaire ...) : j'ai fait un petit programme qui me remet les polices que j'ai choisi à une taille définie, en Bold=false, sans remplissage ni bordure. J'ai juste à ajouter un second bouton pour tout remettre en état après chaque test. Comme quoi vos enseignements portent à des initiatives de simplification. Merci pour tout.
6 жыл бұрын
Très belle mise en oeuvre qui plus est, adaptée à des besoins pratiques. Je vous remercie pour ces témoignages fort plaisants.
@paulhugonnier43334 жыл бұрын
Bonjour, Je viens de découvrir vos séries de vidéos et je les trouve vraiment très bonnes, simples et TRES explicites, autant pour les novices que ceux ayant déjà quelques notions (je découvre bcp de choses). Une question, j'ai pour habitude d'utiliser "Range("A" & Rows.Count).End(xlUp).Row" pour récupérer l'indice de la dernière ligne saisie d'un fichier, et pas conséquent connaître le nombre de lignes non vides. Je ne connaissais pas votre méthode "cells.specialcells(xlcelltypelastcell).row. A priori ces 2 méthodes retournent la même valeur, est ce-qu'il y en a une préférable à une autre ?
4 жыл бұрын
Bonjour Paul et merci beaucoup pour votre message. C'est le principe même de la programmation, plusieurs méthodes et techniques permettent d'atteindre le même résultat. Dans la mesure où l'une n'est pas plus complexe que l'autre, c'est à l'utilisateur de choisir selon ses affinités.
@sanchezdora12663 жыл бұрын
Gross merci pour votre temps et pour nous partager vos connaissances! j'ai besoin de copier une liste de la Colonne 1 de la Feuille 1 aux Colonnes 1, 2, 3 et 4 de la Feuille 2 (Ex : Feuille1 A1, A2, A3, A4 A,5…jusqu’à la dernière = Feuille2 A1, B1, C1, D1, A2, B2, C2, D2, A3, B3, C3, D3....jusqu’a la dernière, dans cette séquence. Avez-vous un vidéo qui puisse m’aider?
3 жыл бұрын
Bonjour Dora. Merci beaucoup pour ce message. Je n'ai pas de vidéo collant spécifiquement à votre demande. Mais il suffit d'engager une boucle sur la hauteur de la liste 1. For i=1 To Valeur_Max Sheets("Feuille2").cells(i,1).Value=Sheets("Feuille1").cells(i,1).Value Sheets("Feuille2").cells(i,2).Value=Sheets("Feuille1").cells(i,2).Value ... Next i
@jacquesdupong79716 жыл бұрын
Bonjour Monsieur pouvez me dire si parmi tous vos tutoriels si un d'entre eux expliquerait comment exemple en rapport avec cette vidéo. Mettre la première ligne du tableau à la place de la deuxième et la deuxième à la place de la première. Désolé pour le dérangement et bravo pour toutes vos explications !
6 жыл бұрын
Bonjour Jacques, je n'ai pas d’exemple précis à ce sujet. Mais avec les formations VBA, vous avez toutes les billes. Il s'agit de mémoriser les informations de la première et seconde ligne dans des variables et de les inscrire inversement dans les cellules. Je vous propose néanmoins plus simple,. Vous faites une macro automatique vous enregistrant en train de simuler ces actions, Couper, clic droit, insérer au dessus (par exemple). Après l'enregistrement, vous consultez le code (Alt + F11) et vous le prélevez.
@jacquesdupong79716 жыл бұрын
Rossetti Stéphane comme d'habitude qu'elle réactivité. Bravo et merci. Dans le premier cas dois je utiliser une boucle ou pas du tout ?
6 жыл бұрын
Je vous en prie Jacques. Oui c'est préférable pour passer en revue plus facilement toutes les colonnes d'une ligne si vous connaissez leurs bornes, donc boucle For Next.
@hamdikarim91906 жыл бұрын
merci
6 жыл бұрын
Je vous en prie Karim
@doriskouassi97684 жыл бұрын
Bonjour Monsieur Rossetti, tout d'abord je vous remercie pour vos formations très efficaces. J'ai suivi la formation sur la boucle For. J'ai écrit tout le code qui s'exécute bien étape par étape avec F8 mais qui bloque avec F5. je reçois le message suivant "Can't exécute code in break mode". L'aide visual basic n'étant pas très explicite pour moi, pourriez-vous s'il vous plaît m'indiquer comment résoudre le problème? Merci
4 жыл бұрын
Bonjour Doris et merci beaucoup pour votre message. Le mode arrêt se déclenche suite à une erreur de syntaxe ou lorsqu'une macro est déjà en cours d'exécution. Vous devez cliquer sur le bouton Stop (Réinitialiser) pour arrêter le débogueur. Dès lors, F5 fonctionnera jusqu'à la prochaine erreur.
@nour-eddineoumakhlouf52964 жыл бұрын
Bravo! Très pratique. Mais beaucoup de chose a retenir sauf réutilisation (insertion ) du code tout fait ? Merci
4 жыл бұрын
Merci à vous Nour-eddine pour ce message très agréable en retour.
@raoultati91642 жыл бұрын
Bonjour! SVp ou pourrais je avoir le fichier de base de traitement?
2 жыл бұрын
Bonjour Raoul. Le fichier source est proposé au téléchargement à cette adresse, vers le début de la formation : www.bonbache.fr/boucles-for-next-en-vba-excel-pour-traitements-automatises-125.html
@patricianeve60395 жыл бұрын
Bonjour Stéphane. J'ai un petit problème au début de cet exercice. Je teste la der-ligne qui me répond bien 21. Mais la der_colonne me répond 11 et non 10. J'ai essayé de la "clearer" pour effacer toute valeur que ne je verrais pas, mais rien ne fait. J'ai toujours 11. Sub boucles() Dim der_ligne As Integer Dim der_colonne As Integer Dim tempo As Integer Range("K:K").ClearContents der_colonne = Cells.SpecialCells(xlCellTypeLastCell).Column der_ligne = Cells.SpecialCells(xlCellTypeLastCell).Row MsgBox der_ligne & " " & der_colonne End Sub Mon tableau est le vôtre téléchargé. Le dernier tableau se termine à la colonne J. Pourriez-vous m'aider ? Un tout grand merci d'avance :-)
5 жыл бұрын
Bonsoir Patricia, je n'ai pas bien le temps de vous aiguiller ce soir. Avez-vous reproduit le code de la formation détaillée fournie à cette adresse ? www.bonbache.fr/boucles-for-next-en-vba-excel-pour-traitements-automatises-125.html
@patricianeve60395 жыл бұрын
@ J'ai retéléchargé le fichier à partir du site, réécrit le code et tout fonctionne parfaitement. Mon ordinateur devait être fatigué ;-) Merci vraiment pour votre réponse rapide et votre aide
5 жыл бұрын
Je vous en prie Patricia et félicitations pour la mise en oeuvre.
@bienvenuesoubabenawan4 жыл бұрын
Je suis encore là Monsieur Stéphane, Dans l'application de la seconde boucle For, j'ai suivi le tuto malheureusement j'obtiens une erreur de type "438 propriété ou méthode non gérée par cet objet" dont je ne comprends pas l'origine. Voici ci-dessous le code à cet effet Sub boucles() Dim ligne As Integer: Dim colonne As Integer Dim der_ligne As Integer: Dim der_colonne As Integer der_ligne = Cells.SpecialCells(xlCellTypeLastCell).Row der_colonne = Cells.SpecialCells(xlCellTypeLastCell).Column For ligne = 1 To der_ligne For colonne = 1 To der_colonne If (ligne > 1) Then If (Cells(ligne - 1, colonne).Value = "" And Cells(ligne, colonne).Value "") Then With Cells(ligne, colonne) .Borders(xlEdgeTop).LineStyle = xlContinuous .Borders(xlEdgeTop).weigth = xlThick .Font.Bold = True .Interior.Color = RGB(70, 170, 30) End With End If End If Next colonne Next ligne End Sub
4 жыл бұрын
Bonjour Monsieur, vous avez une erreur sur le nom de la propriété pour l'épaisseur du trait, il s'agit de Weight et non de weigth. Lorsque VBA ne transforme pas la casse, c'est que la propriété ou méthode n'est pas reconnue.
@bienvenuesoubabenawan4 жыл бұрын
@ Bonjour monsieur Stéphane, effectivement j'ai corrigé l'erreur. Tout marche bien maintenant. Infiniment merci pour votre aide.
4 жыл бұрын
@@bienvenuesoubabenawan Je vous en prie Monsieur.
@valbers953 жыл бұрын
Bonjour, je ne rajoute jamais la variable à côté du mots clé next dans les boucles for et foreach et je n'ai jamais eu de problèmes, est-ce facultatif ou il y a des cas où c'est vraiment essentiel ? Aussi traitez-vous les modules de classe dans votre livre vba avancées ? Merci d'avance et bon réveillon : )
3 жыл бұрын
Bonjour Jack. Le VBA est permissif mais ce n'est pas le cas d'autres langages. Il est donc préférable d'être puriste et de prendre les bonnes habitudes. Un programmeur doit être précis. Je traite les classes mais pas encore les modules de classe. Cela viendra. Je vous remercie beaucoup pour ce message et pour votre intérêt.
@wardanderson52956 жыл бұрын
Bonjour Stéphane! j'espère que tu vas bien, j'aimérai connaitre le lien sur le tuto relatif au boucle While. merci!
6 жыл бұрын
Bonjour Monsieur. Voici le lien : www.bonbache.fr/boucles-for-next-en-vba-excel-pour-traitements-automatises-125.html. Désolé de vous poser cette question. Comme il n'est pas courant, pouvez-vous me confirmer que votre prénom est bien Ward ?
@wardanderson52956 жыл бұрын
Pas exactement, Ward est juste un surnom, mon prénoms c'est Rock.
@wardanderson52956 жыл бұрын
en réalité, je cherche à savoir comment fonctionne la boucle WHILE, afin de me permettre de mieux comprendre l'exercise sur le facturier automasé avec gestion de stocks
6 жыл бұрын
Rock n'est pas non plus un prénom courant. Enchanté donc. Je propose de nombreuses formations exploitant la boucle While en VBA Excel. Je vous suggère de taper les mots clés suivants : While Excel, dans la zone du petit moteur de recherche en haut à droite, sur le site Bonbache.fr. Ensuite, vous pourrez faire votre choix.
@wardanderson52956 жыл бұрын
Merci professeur! je lance la recherche
@lentzmarc76327 жыл бұрын
Bonjour j'ai suivi votre vidéo et recopié votre exercice mais au 2eme test il me renvoie à la case A1 au lieu de B4 pourquoi malgré cela c'est un plaisir de suivre vous explications
7 жыл бұрын
Pouvez vous copier le code que vous avez saisi ? En tous cas merci pour votre message.
@lentzmarc76327 жыл бұрын
Dim ligne As Integer: Dim colonne As Integer Dim der_ligne As Integer: Dim der_colonne As Integer der_ligne = Cells.SpecialCells(xlCellTypeLastCell).Row der_colonne = Cells.SpecialCells(xlCellTypeLastCell).Column For ligne = 1 To der_ligne For colonne = 1 To der_colonne If (Cells(ligne, colonne).Value " ") Then MsgBox ligne & " " & colonne Exit Sub End If Next colonne Next ligne je travaille sous excel 2016 merci
7 жыл бұрын
Oui en effet, la boucle consiste à détecter les bornes des tableaux sur la feuille de calcul en parcourant tous les indices de lignes et colonnes jusqu'aux derniers. Et le test consiste à vérifier la première cellule non vide "" pour se positionner sur la première cellule d'entête détectée. Le souci vient du critère, vous avez écrit le test If (Cells(ligne, colonne).Value " ") Then et il y a un espace entre les deux guillemets. Comme aucun cellule n'est égale à un espace, ce test est toujours vrai. Il faut écrire strictement If (Cells(ligne, colonne).Value "") Then, en supprimant l'espace entre les guillemets donc pour bien détecter la première cellule non vide.
@lentzmarc76327 жыл бұрын
merci cela fonctionne. j'aurai pu cherché longtemps en tout cas vos vidéos sont excellentes et bien expliquées
7 жыл бұрын
Merci beaucoup
@guillaumehernandez9487 жыл бұрын
Bonjour Stéphane,Je vous remercie pour toutes ces vidéos qui me sont d'une énorme utilité. Alors j'ai refais l'exercie en essayant d'aller plus loin et de mettre une somme en dessous de la colonne prix TTC. En revanche je n'y arrive pas du tout. Pouvez-vous m'éclaire ?Voici le code: Sub calcul()Dim ligne As Integer: Dim colonne As Integer Dim Der_ligne As Integer: Dim Der_colonne As IntegerDer_ligne = Cells.SpecialCells(xlCellTypeLastCell).Row Der_colonne = Cells.SpecialCells(xlCellTypeLastCell).Columnligne = 1: colonne = 1 For ligne = 1 To Der_ligne For colonne = 1 To Der_colonne If (Cells(ligne + 1, colonne).Value = "" And Cells(ligne, colonne + 1).Value = "" And Cells(ligne, colonne).Value "") Then Cells(ligne, colonne).xlUp.Select Selection.Worksheet.Function.Sum End If Next colonneNext ligne End Sub
7 жыл бұрын
Bonjour Guillaume et merci pour votre retour, l'emploi de l'objet Selection en tant que Range est intéressant pour désigner la plage de la somme, il n'y a donc plus qu'à l'exécuter mais en sélectionnant la cellule du résultat : cells(ligne,colonne).Value = Application.WorksheetFunction.Sum(Selection)
@annejovevski99296 жыл бұрын
Bonjour, j'ai bien compris toutes vos vidéos mais n'arrive pas à les mettre en pratique. J'ai un tableau de commandes. Chaque commande à plusieurs lignes mais aucune n'a le meme nombre de ligne. Chaque commande porte un numéro. Colonne A = nom du client, colonne B = numéro de facture, colonne C = montant HT, colonne D = TVA. Je souhaite faire une macro pour insérer deux lignes au dessous à chaque fois que le numéro de facture change. Ensuite, sur ces deux lignes, je souhaite automatiser la saisie comptable avec les contreparties. Pouvez-vous m'aider ????? MERCI
6 жыл бұрын
Bonjour Anne, une boucle While pourrait vous aider. While (cells(ligne, indice_colonne) "") ligne=ligne+1 Wend Au sortir de la boucle, l'indice mémorisé dans la variable ligne est celui de la fin de votre tableau, soit la position à partir de laquelle vous pouvez débuter l'insertion automatisée. J'aimerais vous aider plus, mais difficile de trouver du temps. Et même si je vous demandais plus de détail sur votre projet, je ne pourrais me pencher dessus avant quelques semaines.
@baptistedelacourt10784 жыл бұрын
Bonjour Stéphane et les autres internautes. Merci pour votre vidéo. Il y a une chose que je ne comprends pas dans cette vidéo. Pourquoi n'avez vous pas défini les variables ligne et column : Ligne = cells.row colonne = cells.column Comment excel fait-il pour comprendre l'instruction: for colonne = 1 to der_colonne s'il ne sait pas que colonne = column Si quelqu'un a la réponse, ça m'intéresse, Merci d'avance !
4 жыл бұрын
Bonjour Baptiste. Les variables ligne et colonne sont bien déclarées. Les variables der_ligne et der_colonne sont initialisées sur les bornes de la feuille, jusqu'à la dernière cellule non vide. Donc l'instruction for colonne = 1 to der_colonne permet de faire varier l'indice de colonne du premier au dernier recensé. On fait de même pour l'indice de ligne : for ligne = 1 to der_ligne. De cette manière, toutes les cellules utiles sont passées en revue. Vous avez toutes les explications en pas à pas détaillé à cette adresse : www.bonbache.fr/boucles-for-next-en-vba-excel-pour-traitements-automatises-125.html
@GeorgeBander8 жыл бұрын
Bonjour cher professeur ! J'ai refait à l'intégrale l'exercice, et pourtant une erreur 400 apparaît à chaque fois que je veux envoyer la boucle !! J'ai bien vérifier, car le VBA n'est point facile, il suffit d'un rien.....! Mais là j'avoue ne plus rien découvrir ! D'autant plus que le débogage pas à pas, ne fonctionne pas, alors je ne sais ou j'ai fait l'erreur !!....Pour le reste, ce fut un plaisir de reprendre le VBA, même si celui-ci n'est point facile à digérer....Merci !!
8 жыл бұрын
Bonsoir George, les causes d'une erreur 400 peuvent être multiples. Comme ce code détecte automatiquement les bornes des tableaux présents dans la feuille pour les parcourir et les mettre en forme, explicitement différemment pour les titres d'ailleurs, il suffirait qu'une ligne ou une colonne soit affectée à l'indice 0 (Ce qui n'existe pas dans une feuille Excel), dans les boucles par le jeu des incrémentations, pour que l'affection d'une propriété de cellule renvoie ce type d'erreur. Dans la double boucle While, il faudrait temporairement enlever le code pour déjà tester son bon fonctionnement, juste après l'initialisation des variables : While (ligne < der_ligne) colonne = 1 While (colonne < der_colonne) MsgBox (ligne & "-" & colonne) colonne = colonne + 1 Wend ligne = ligne + 1 Wend Pour vérifier dans un premier temps que les valeurs renvoyées pour les lignes et colonnes sont cohérentes.
@GeorgeBander8 жыл бұрын
Je vérifie et vous tient au courant !! Merci !!
@martingalabru50117 жыл бұрын
Bonjour Stéphane, J'essaye depuis maintenant 1 semaine de créer une macro pour me faire gagner un temps précieux au travail. Je dois automatiser une tache longue et répétitif : la valeur cible. Ainsi j'ai trouvé le code suivant, me permettant donc de faire une valeur cible sur la ligne 13. Sub ValeurCible() ' V13 cellule contenant la formule ' X13 cellule contenant la valeur que la formule doit atteindre ' I13 cellule contenant la variable à modifier Range("V13").GoalSeek Goal:=Range("X13").Value, ChangingCell:=Range("I13") End Sub Sauf que cela me fait seulement la ligne 13. Après de longues minutes à essayer de mettre une boucle, et en ayant suivi de nombreux tutos, je n'y suis pas arrivé... Ainsi, j'aimerai une boucle allant de la cellule V13 à V213. Avez-vous une idée de quel boucle dois-je utiliser ? Et comment faire ? Milles mercis par avance ! Martin
7 жыл бұрын
Bonjour Martin, la valeur cible consiste à résoudre une équation à une ou plusieurs inconnues. C'est un problème que j'ai résolu sur une demande spécifique, le distributeur de billets. En fonction de la somme demandée inscrite dans une cellule, et en fonction des billets encore disponibles en banque, le code doit fournir en retour la combinaison de billets permettant d'atteindre le solde demandé : www.bonbache.fr/distributeur-de-billets-en-visual-basic-excel-143.html La clé est l'imbrication de boucles pour tester toutes les valeurs jusqu'à trouver celles qui matchent.
@martingalabru50117 жыл бұрын
Re-bonjour Stéphane, Je vous remercie de votre réponse. Il me semble que j'ai mal expliqué mon problème. Je dois régulièrement remplir des fichiers Excel avec des remises plus ou moins différentes pour mes clients tous les mois. J'ai environ 120 produits à faire à chaque fois, et je dois donc faire : Analyse Scénarios - Valeur Cible, et changer les 3 cases; et faire cette manip 120 fois. J'aurai aimé gagner du temps, et automatiser ou faire en sorte que toutes les colonnes des 120 produits se fassent d'un coup. J'ai donc une macro qui fonctionne mais uniquement sur la ligne 13. Sub ValeurCible() ' V13 cellule contenant la formule ' X13 cellule contenant la valeur que la formule doit atteindre ' I13 cellule contenant la variable à modifier Range("V13").GoalSeek Goal:=Range("X13").Value, ChangingCell:=Range("I13") End Sub Je cherche donc à incorporer une boucle afin de pouvoir faire les 120 fiches produits d'un coup. Je vous remercie par avance ! Martin
7 жыл бұрын
En mettant en pratique ce qu'enseigne cette formation sur les boucles For Next vous devriez arriver à vos fins. Plutôt que d'utiliser l'objet Range pour désigner V13 par exemple, vous pouvez exploiter l'objet Cells(indice_ligne,22), 22 pour V et faire varier l'indice de ligne 120 fois : for indice_ligne=13 To 132 ... Le traitement doit être intégré dans la boucle et chaque cellule adapté avec l'indice de ligne en variable et l'indice de colonne fixe.
@martingalabru50117 жыл бұрын
Bonjour Stéphane, Je vous remercie de votre réponse. Je débute juste avec les macros, et le VBA reste assez compliqué à comprendre. J'ai dû mal à comprendre toutes vos explications. Si je comprends bien, je dois utiliser For Next pour la boucle. Est-ce que je peux garder l'objet range ? Ou je dois indéniablement passer par Cells? Merci par avance.
7 жыл бұрын
Cells est plus approprié car avec une boucle For Next, on peut ainsi faire varier son indice de ligne 120 fois comme vous le souhaitez afin d'intégrer toutes les cellules dans un seul traitement. C'est exactement ce que propose cette formation sur laquelle nous commentons.