Boucles For Next en VBA Excel pour traitements automatisés

Поділитися
Вставка
  • Опубліковано 2 гру 2024

КОМЕНТАРІ • 100

  • @franckmaniacs2575
    @franckmaniacs2575 9 місяців тому

    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. 👍

    •  9 місяців тому

      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.

  • @malo8732
    @malo8732 3 роки тому +1

    merci Stéphane pour ce cours très intéressant sur les boucles For

    •  3 роки тому

      Je vous en prie Laurence. Je vous remercie également pour ce message en retour.

  • @Nono-mm6zp
    @Nono-mm6zp 7 років тому +2

    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 років тому +1

      Merci à vous Nono 1975 d'avoir pris le temps de faire un message. Ce genre de retour est très gratifiant.

    • @Nono-mm6zp
      @Nono-mm6zp 7 років тому +1

      Oui c'est gratifiant , je comprends, vous devriez donner de vrai cours, vous avez une voie excellente pour travailler.

    •  7 років тому +1

      Merci infiniment. J'en donne en effet, quasiment au quotidien d'ailleurs.

  • @sumaililpatient1309
    @sumaililpatient1309 4 роки тому +2

    l’explication est nettement claire, c'est plus que génial, merci beaucoup

    •  4 роки тому

      Merci infiniment pour ce message sumaili lpatient.

  • @essamdiabdelaziz9501
    @essamdiabdelaziz9501 2 роки тому

    Grand Merci pour vos efforts louables et vos explications claires.

    •  2 роки тому

      C'est un plaisir Abdelaziz. Merci beaucoup pour ce message.

  • @GeorgeBander
    @GeorgeBander 7 років тому +3

    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 !

    •  7 років тому +1

      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 ?

    • @GeorgeBander
      @GeorgeBander 7 років тому +1

      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 !!

    •  7 років тому +1

      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

  • @pierrotthesoft
    @pierrotthesoft 5 років тому +1

    merci pour cette formation ils nous aident plus, merci encore

    •  5 років тому

      Avec plaisir Pierrot. Merci à vous pour ce message en retour.

  • @abouomarmaghribi9073
    @abouomarmaghribi9073 7 років тому +1

    vraiment j'ai adoré cette vidéo bon courage Monsieur Stéphane merci beaucoup

    •  7 років тому +1

      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.

  • @kawther2611
    @kawther2611 4 роки тому

    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.

  • @Salyanov5
    @Salyanov5 3 роки тому

    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.

    •  3 роки тому

      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.

    • @robertodamian7544
      @robertodamian7544 3 роки тому

      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!

    • @calvinrocco4505
      @calvinrocco4505 3 роки тому

      @Roberto Damian Instablaster =)

    • @robertodamian7544
      @robertodamian7544 3 роки тому

      @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.

    • @robertodamian7544
      @robertodamian7544 3 роки тому

      @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 !

  • @lebossedesbosse9484
    @lebossedesbosse9484 3 роки тому +1

    facile a comprendre .Merci

    •  3 роки тому

      C'est un plaisir Konan. Merci pour ce message.

  • @raoultati9164
    @raoultati9164 2 роки тому +1

    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.

  • @alexandredecoster1586
    @alexandredecoster1586 11 місяців тому +1

    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?

    •  11 місяців тому +1

      Bonjour Alexandre. Vous pouvez peut être essayer simplement d'appliquer des graphiques SparkLine dans vos cellules depuis le ruban Insertion.

  • @despierresetdubois3828
    @despierresetdubois3828 6 років тому +2

    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 років тому +1

      Très belle mise en oeuvre qui plus est, adaptée à des besoins pratiques. Je vous remercie pour ces témoignages fort plaisants.

  • @raoultati9164
    @raoultati9164 2 роки тому +1

    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

  • @michelcarrere644
    @michelcarrere644 5 років тому +1

    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é.

  • @doriskouassi9768
    @doriskouassi9768 4 роки тому +1

    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.

  • @valbers95
    @valbers95 2 роки тому +1

    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 : )

    •  2 роки тому

      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.

  • @HugolinPerdriau
    @HugolinPerdriau Рік тому +1

    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.

    •  Рік тому

      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

  • @sanchezdora1266
    @sanchezdora1266 3 роки тому +1

    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

  • @hamdikarim9190
    @hamdikarim9190 5 років тому +1

    merci

    •  5 років тому +1

      Je vous en prie Karim

  • @patricianeve6039
    @patricianeve6039 4 роки тому +1

    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 :-)

    •  4 роки тому +1

      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

    • @patricianeve6039
      @patricianeve6039 4 роки тому +1

      @ 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

    •  4 роки тому +1

      Je vous en prie Patricia et félicitations pour la mise en oeuvre.

  • @paulhugonnier4333
    @paulhugonnier4333 4 роки тому +1

    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.

  • @loicbelloy2479
    @loicbelloy2479 4 роки тому +1

    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.

    • @loicbelloy2479
      @loicbelloy2479 4 роки тому +1

      @ 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.

  • @wardanderson5295
    @wardanderson5295 5 років тому +1

    Bonjour Stéphane! j'espère que tu vas bien, j'aimérai connaitre le lien sur le tuto relatif au boucle While. merci!

    •  5 років тому

      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 ?

    • @wardanderson5295
      @wardanderson5295 5 років тому

      Pas exactement, Ward est juste un surnom, mon prénoms c'est Rock.

    • @wardanderson5295
      @wardanderson5295 5 років тому

      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

    •  5 років тому

      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.

    • @wardanderson5295
      @wardanderson5295 5 років тому

      Merci professeur! je lance la recherche

  • @jacquesdupong7971
    @jacquesdupong7971 6 років тому +1

    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 років тому +1

      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.

    • @jacquesdupong7971
      @jacquesdupong7971 6 років тому +1

      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.

  • @guillaumehernandez948
    @guillaumehernandez948 7 років тому +1

    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)

  • @nour-eddineoumakhlouf5296
    @nour-eddineoumakhlouf5296 4 роки тому

    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.

  • @laurentblaevoet2728
    @laurentblaevoet2728 3 роки тому

    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 !

    •  3 роки тому

      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.

  • @bienvenuesoubabenawan
    @bienvenuesoubabenawan 4 роки тому +1

    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 роки тому +1

      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.

    • @bienvenuesoubabenawan
      @bienvenuesoubabenawan 4 роки тому +1

      @ 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.

  • @baptistedelacourt1078
    @baptistedelacourt1078 4 роки тому +1

    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

  • @annejovevski9929
    @annejovevski9929 6 років тому

    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.

  • @lentzmarc7632
    @lentzmarc7632 7 років тому +1

    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.

    • @lentzmarc7632
      @lentzmarc7632 7 років тому +1

      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.

    • @lentzmarc7632
      @lentzmarc7632 7 років тому +1

      merci cela fonctionne. j'aurai pu cherché longtemps
      en tout cas vos vidéos sont excellentes et bien expliquées

    •  7 років тому

      Merci beaucoup

  • @GeorgeBander
    @GeorgeBander 7 років тому +1

    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 !!

    •  7 років тому +1

      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.

    • @GeorgeBander
      @GeorgeBander 7 років тому +1

      Je vérifie et vous tient au courant !! Merci !!

  • @martingalabru5011
    @martingalabru5011 7 років тому +1

    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.

    • @martingalabru5011
      @martingalabru5011 7 років тому +1

      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.

    • @martingalabru5011
      @martingalabru5011 7 років тому +1

      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.