Bonsoir Cher Professeur !!! C'est magique une fois de plus !! J'ai pu, grâce à ce tuto, manipuler à ma guise, les 27000 chiffres d'une base de donnée de pression interchangeable !! Je suis fou heureux, car je ne savais vraiment pas comment m'y prendre avec tout ces numéros !! Pour les fréquences, j'ai pu aussi les manipuler comme je le voulais, avec des N° acquis par la base de donnée. Encore une fois, mille merci pour cet excellent tuto !!! Yes !!!!
8 ปีที่แล้ว +2
Bonsoir George, je suis vraiment heureux de votre retour et de savoir que ce code vous a été utile. Je le trouve en effet particulièrement intéressant pour faire ressortir les valeurs redondantes, tout en les mettant en valeur, au-delà du doublon car ce n'est effectivement pas une fonctionnalité que propose Excel pour les triplons, quadruplons etc.. et tout cela avec un code relativement simple et optimisé grâce aux boucles et leurs traitements récurrents indispensables à bien des égards. Bonne soirée George et merci beaucoup
Bravo. Très bon exemple pédagogique. Simple et clairement expliqué. Il faut tout de même avoir quelques bases, mais les bons commentaires viennent vite les enrichir et combler les insuffisances de connaissances. La clarté et le rythme vocal ajoute aussi un bon + au reste.
2 ปีที่แล้ว
Très heureux Pascal de votre retour. Oui, en effet des bases sont nécessaires pour comprendre le mécanisme de ces boucles. Avec un peu de pratique, ça vient vite ensuite. Merci beaucoup pour ce message et pour ces encouragements.
Je tenais à vous remercier pour ces formations VBA. Ce n'est qu'en désespoir de cause et à quelques jours d'un partiel pour lequel je n'avais que très peu travaillé (et donc un cours pour lequel j'avais très peu de notes) que je suis tombé sur vos vidéos. Alors que ce langage de programmation ne m'intéressait jusque là que très peu, j'y ai découvert grâce à vous une logique et des possibilités qui m'avaient totalement échappé. Finalement, je compte bien approfondir ma connaissance de cet outil même après mon partiel, alors merci à vous !
3 ปีที่แล้ว +1
Bonjour Alexandre. Je suis ravi que vous ayez pu domestiquer ce langage grâce à mes tutos. C'est un grand plaisir pour moi et je vous remercie très sincèrement d'avoir pris le temps de poster ce témoignage.
A la première lecture de cette vidéo, je n'ai pas compris l'utilité de cet exemple. Je l'ai repris ce matin, reposée, en exécutant le programme au fur et à mesure, et ça a été beaucoup plus clair. A la fin, afin de pouvoir mettre une couleur en fonction du nombre de fréquence, j'ai utilisé la fonction Select Case vue plus avant, ça marche nickel. Merci pour vos enseignements
6 ปีที่แล้ว
Oui c'est d'un choix pertinent et audacieux, je vous félicite et vous remercie pour ce message.
Bonjour Stéphane, je débute en VBA et je trouve votre formation très bien conçue avec une belle avancée progressive ! merci pour tout ce travail. Petite question de débutant sur cette vidéo : comment Excel sait que le mot "cellule" correspond vraiment à une cellule ? Pouvez vous réexpliquer le fait de dimensionner la variable cellule en range ? est-ce que c'est cela qui permet à Excel de savoir que "cellule" correspond à 1 seule cellule ?
ปีที่แล้ว
Bonjour François, je vous remercie pour votre intérêt. Le mot cellule est une variable que nous déclarons en français comme un objet de type Range qui désigne une plage de cellules ou à défaut une cellule unique, précisément dans ce cas, pour les parcourir toutes.
Bonsoir, un grand grand grand merci pour votre travail. C'est très clair. J'ai cependant une question, vous êtes passé asez vite sur la partie du code "frequence = frequence + 1", j'imagine donc que c'est assez simple.. j'aimerais comprendre la logique derrière cette ligne et en quoi cette dernière sert dans ce code. Après 6 and je ne m'attends pas à une réponse, mais qui ne tente rien n'a rien.. Encore un grand merci.
3 ปีที่แล้ว +1
Bonjour Henri. Bien sûr que je vous réponds. Je continue de développer mes formations. Il s'agit d'une incrémentation systématique dès qu'une comparaison répond positivement pour gonfler le score des redondances. Au premier doublon, frequence vaut 1, au deuxième frequence vaut 2 et ainsi de suite. L'ancien score est mémorisé et gonflé au fil de la découverte. Vous trouverez le pas à pas détaillé et toutes les explications à cette adresse : www.bonbache.fr/boucle-d-instruction-for-each-en-vba-excel-123.html
Premièrement merci pour ces vidéos. J'ai une petite question dans l'exemple for each vous n'avez pas initialiser la variable mémoire et malgré ça Excel à pu parcourir la boucle alors que logiquement ça doit afficher une erreur
4 ปีที่แล้ว +1
Bonjour et merci pour votre intérêt. Très bonne remarque. VBA est permissif comme d'autres langages dont le Javascript. Sans l'instruction Option Explicit en entête de code, la déclaration de variables n'est pas imposée. Dès lors, VBA les type à la volée comme des Variant, ce qui coûte plus en ressources. Je l'explique dans les volets suivants. Mais comme ici il s'agit d'une suite de l'introduction, je vais au plus court pour simplifier la prise en main et la compréhension.
désolé mais moi pour que ca fontionne il faut que je mette "if frequence>1" pour que ca fonctionne vous avez une explication ?
2 ปีที่แล้ว
Bonjour Guy. Votre variable frequence ne doit pas être initialisée comme il faut. Après le supérieur à 1 n'est pas idiot pour ne pas considérer la cellule originelle. Mais dans les deux cas, le processus fonctionne admirablement. Je vous livre le lien du pas à pas détaillé s'il vous intéresse : www.bonbache.fr/boucle-d-instruction-for-each-en-vba-excel-123.html
Bonjour ! S'il vous plait, par quoi remplacer "For Each" et "xOng", lorsqu'on veut appliquer certains traitements à certaines colonnes choisies de certains onglets choisis ? Merci
3 ปีที่แล้ว +1
Bonjour Xplorer. Le For Each est tout à fait dédié pour parcourir les onglets d'un classeur. For Each Onglet In ThisWorkbook.Sheets...Si vos plages varient d'une feuille à une autre, il faut réaliser des tests pour savoir quand les cellules sont vides et arrêter le traitement.
Difficile de penser un autre mot que "parfait"... La progression d'une vidéo à l'autre est très adaptée, de sorte que personne ne devrait être en rade. Merci :-)
4 ปีที่แล้ว
Vous m'honorez mon Cher Marcus. Je suis très flatté. J'espère que vous avez autant apprécié la programmation VBA Access car il me semble avoir lu que vous aviez commencé par ces tutos ?
@ J'ai en effet commencé par votre formation en VBA Access, qui m'a justement donnée envie d'explorer davantage vos formations. Mais comme celle d'Access fait appel à certains prérequis, et même si avant tout j'ai besoin de VBA pour Access, je me dis que je ne perds rien à mettre en pause ma progression (je reviendrai plus tard à VBA Access) pour re/voir toutes les bases via votre formation VBA Excel. Et je ne suis pas déçu ! Merci.
4 ปีที่แล้ว
@@Salyanov5 Oui tout à fait, vous avez parfaitement raison, c'est volontairement que je ne répète pas en VBA Access ce que j'ai déjà avancé en VBA Excel, en tous cas pour les fondamentaux.
Bonjour, très bonne vidéo comme toujours, par contre à la fin vous envisagiez d’aller plus loin afin de par exemple écrire dans une feuille les valeurs trouvées ainsi que leurs fréquences d’apparition… vous parliez d’aborder cet aspect dans vos futures vidéo et sauf erreur de ma part je ne le trouve pas. Merci pour votre travail.
5 ปีที่แล้ว +1
Bonjour Fred et merci beaucoup pour votre message. Oui, il s'agit d'un exemple potentiel d'exploitation. Au travers des autres formations VBA, nous allons plus loin mais pas nécessairement sur ce terrain en effet. En revanche, sans VBA, la fonction Nb.Si peut être d'une être précieuse pour ce type de synthèse.
Bonjour, Vos cours sont supers bien faits et intéressants ! J'ai une question, quand je refais ce code sur mon excel, ça me met un message d'erreur "objet requis" quand j'essaye de cliquer sur le bouton. Je n'arrive pas à trouver comment corriger cette erreur, pouvez-vous maider ? Je vous mets mon code au cas où : Sub frequence() Dim cellule As Range: Dim frequence As Byte Dim ligne As Byte: Dim colonne As Byte Dim cellule2 As Range For Each cellule In Selection frequence = 0 ligne = cellule.Row: colonne = cellule.Column For Each cellule2 In Selection If (ligne cellule2.Row Or colonne celulle2.Column) Then If (cellule.Value = cellule2.Value) Then frequence = frequence + 1 End If End If Next cellule2 If (frequence > 0) Then cellule.Font.Bold = True cellule.Font.Size = 11 + frequence * 2 End If Next cellule End Sub
ปีที่แล้ว
Bonjour et merci pour ce message. Pouvez-vous me dire la ligne précise sur laquelle se déclenche ce message d'erreur s'il vous plaît ?
Merci Stéphane, c'est simple et efficace. Pour appliquer ce code à une table qui fait 30 colonnes et 10000 lignes, par quoi faut-il remplacer "BYTE" (erreur 6 dépassement de capacité)? merci !
4 ปีที่แล้ว +1
Bonjour Jérôme et merci pour votre message. La question est intéressante. La raison est simple. Le Byte est l'entier le plus court, question d'optimisation des ressources. Il peut accepter uniquement des valeurs entières comprises entre 0 et 255. Donc pour parcourir toutes les lignes de votre tableau, forcément il faut typer la variable en Integer.
Merci pour la validation de cette information. Vos formations présentent très bien le traitement par des boucles mais souvent il faut s'agit de supprimer la ligne entière lors d'un doublon, comment supprimer individuellement des cellules "doublonnées" (et en garder au moins une) et ignorer les cellules vides ?
4 ปีที่แล้ว +1
@@JEJESAX Avec des tests, si la cellule est vide (="") on laisse la boucle s'incrémenter, si la cellule du dessus propose la même valeur, on supprime celle en cours, donc l'originale est conservée. Mais pour cela, il faut d'abord organiser un tri du tableau.
Bonjour, Il me semble qu'il y a une petite erreur dans l'exemple donné : dans le code "If (ligne cellule2.row Or colonne cellule2.Column) then" ce n'est pas un OR qu'il faut mais un AND, car on teste que ce n'est pas la cellule en cours défini par sa ligne et sa colonne. A part cela, c'est un cours très pédagogique. Bravo...
4 ปีที่แล้ว
Bonjour Michel et merci beaucoup pour votre message. Il n'y a pas d'erreur. L'emploi du Or est volontaire. Il suffit que l'une des conditions soit vérifiée pour confirmer qu'il ne s'agit pas de la même cellule à la recherche de doublons.
Bonsoir Stéphane, déjà un grand merci pour vos vidéos qui sont très bien expliquées et qui permettent aux débutantes comme moi de progresser à leur rythme. Quand j'écris la macro, je n'arrive pas à l'exécuter car ai le message suivant : erreur d'exécution 438 : propriété ou méthode non gérée par cet objet. je sui sous Excel pour Microsoft 365. Sub frequences() Dim cellule As Range: Dim frequence As Byte Dim ligne As Byte: Dim colonne As Byte Dim cellule2 As Range For Each cellule In Selection frequence = 0 ligne = cellule.Row: colonne = cellule.Column For Each cellule2 In Selection If (ligne cellule2.Row Or colonne cellule2.Column) Then If (cellule.Value = cellule2.Value) Then frequence = frequence + 1 End If End If Next cellule2
If (frequence > 0) Then cellule.front.Bold = True celulle.front.Size = 11 + frequence * 2 End If
Next cellule End Sub Merci pour votre aide
3 ปีที่แล้ว
Bonjour Laurence. Merci pour votre message. La version d'Excel n'a pas d'impact. Votre code me semble correct. Il serait bon de connaître la ligne de code surlignée par le débogueur lorsque l'erreur surgit. Il peut aussi s'agir d'un contenu de cellule incorrect parmi celles qui sont sélectionnées et analysées tour à tour. Avez-vous bien pensé à sélectionner les données numériques avant d'exécuter la procédure ?
@ Bonjour Stéphane, je vous remercie d'avoir pris le temps de me répondre. J'ai bien sélectionné les données numériques. Le Sub frequences() était surligné en jaune ....
3 ปีที่แล้ว
@@malo8732 Quelque chose m'échappe. Le code est absolument fonctionnel. Si aucune ligne n'est mise en évidence, je ne comprends pas sur quel point un problème est rencontré. Il y a sans doute une anomalie dans la feuille de votre classeur. Parfois, la résolution tient à peu de choses. Je vous invite à tester exactement le même code, dans un autre classeur avec des données numériques nouvelles.
@ J'ai essayé de le reprendre sur un autre PC et j'ai eu le même message d'erreur. Je commence à mieux posséder la fonction débuggage, je le reprendrai demain. Encore un grand merci pour vos cours et votre suivi :)
3 ปีที่แล้ว +1
@@malo8732 Je vous en prie. J'espère que vous règlerez le souci. Il n'y a aucune raison que le code ne fonctionne pas. Il s'agit d'instructions classiques.
Bonjour, cette ligne de code (suite du cours boucle de votre livre vba ne fonctionne pas et je ne comprends pas pourquoi, pouvez-vous m'aider : Sub boucles() Dim der_ligne As Integer: Dim der_colonne As Integer Dim ligne As Integer: Dim colonne As Integer der_colonne = Cells.SpecialCells(xlCellTypeLastCell).Column der_ligne = Cells.SpecialCells(xlCellTypeLastCell).Row For ligne = 1 To der_ligne For colonne = 1 To der_colonne Next colonne Next ligne If (ligne > 1) Then If (Cells(ligne - 1, colonne).Value = "" And Cells(ligne, colonne).Value "") Then With Cells(ligne, colonne) .Borders(xlEdgeTop).LineStyle = xlContinous .Borders(slExdgeTop).Weight = xlThick .Font.Bold = True .Interior.Color = RGB(70, 170, 30) End With End If End If Par avance merci !
4 ปีที่แล้ว
Bonsoir Patricia et merci pour votre intérêt. Vous fermez les bornes des boucles de traitement avant même de réaliser les traitements : For ligne = 1 To der_ligne For colonne = 1 To der_colonne Next colonne Next ligne Ce n'est pas ce qui est écrit dans le Livre. Le code est fourni par fragments d'abord pour aider à la conception puis il est livré dans sa version finalisée à l'issue du chapitre.
Bonjour, j'adore vos vidéos elles m'aident énormément ! Cependant, je n'ai pas très bien compris l'intérêt de cette étape : ligne cellule2.Row Or colonne cellule2.Column ?
4 ปีที่แล้ว
Bonjour Helena et merci beaucoup pour votre message. Le test auquel vous faites allusion est inscrit dans une double boucle. Pour l'évaluation des redondances, il consiste simplement à éviter de comparer la cellule en cours d'analyse à elle même.
Désolé je n’ai pas compris pourquoi memoire = memoire & .....
4 ปีที่แล้ว
Il s'agit d'un empilement pour stocker toutes les valeurs analysées. Tout est soigneusement expliqué dans le pas à pas détaillé à cette adresse : www.bonbache.fr/boucle-d-instruction-for-each-en-vba-excel-123.html
Rossetti Stéphane Merci Stephane pour cette réponse rapide!! Je vais aller voir cela. J’avoue que cette video entre dans un niveau de difficulté pour lequel je vais avoir en effet besoin de votre site en plus!! Merci beaucoup (j’ai au passage suivi toute la formation Access minutieusement, tout était parfait!! Encore merci)
4 ปีที่แล้ว
Je suis ravi que vous ayez suivi l'intégralité de la formation à Access. Access est déjà un gros morceau. Donc, vous le verrez, avec le site, vous ne devriez pas éprouver de grandes difficultés pour la mise en place du code VBA.
Bonsoir Cher Professeur !!! C'est magique une fois de plus !! J'ai pu, grâce à ce tuto, manipuler à ma guise, les 27000 chiffres d'une base de donnée de pression interchangeable !! Je suis fou heureux, car je ne savais vraiment pas comment m'y prendre avec tout ces numéros !! Pour les fréquences, j'ai pu aussi les manipuler comme je le voulais, avec des N° acquis par la base de donnée. Encore une fois, mille merci pour cet excellent tuto !!! Yes !!!!
Bonsoir George, je suis vraiment heureux de votre retour et de savoir que ce code vous a été utile. Je le trouve en effet particulièrement intéressant pour faire ressortir les valeurs redondantes, tout en les mettant en valeur, au-delà du doublon car ce n'est effectivement pas une fonctionnalité que propose Excel pour les triplons, quadruplons etc.. et tout cela avec un code relativement simple et optimisé grâce aux boucles et leurs traitements récurrents indispensables à bien des égards. Bonne soirée George et merci beaucoup
Bravo. Très bon exemple pédagogique. Simple et clairement expliqué.
Il faut tout de même avoir quelques bases, mais les bons commentaires viennent vite les enrichir et combler les insuffisances de connaissances.
La clarté et le rythme vocal ajoute aussi un bon + au reste.
Très heureux Pascal de votre retour. Oui, en effet des bases sont nécessaires pour comprendre le mécanisme de ces boucles. Avec un peu de pratique, ça vient vite ensuite. Merci beaucoup pour ce message et pour ces encouragements.
Je tenais à vous remercier pour ces formations VBA. Ce n'est qu'en désespoir de cause et à quelques jours d'un partiel pour lequel je n'avais que très peu travaillé (et donc un cours pour lequel j'avais très peu de notes) que je suis tombé sur vos vidéos. Alors que ce langage de programmation ne m'intéressait jusque là que très peu, j'y ai découvert grâce à vous une logique et des possibilités qui m'avaient totalement échappé. Finalement, je compte bien approfondir ma connaissance de cet outil même après mon partiel, alors merci à vous !
Bonjour Alexandre. Je suis ravi que vous ayez pu domestiquer ce langage grâce à mes tutos. C'est un grand plaisir pour moi et je vous remercie très sincèrement d'avoir pris le temps de poster ce témoignage.
A la première lecture de cette vidéo, je n'ai pas compris l'utilité de cet exemple. Je l'ai repris ce matin, reposée, en exécutant le programme au fur et à mesure, et ça a été beaucoup plus clair. A la fin, afin de pouvoir mettre une couleur en fonction du nombre de fréquence, j'ai utilisé la fonction Select Case vue plus avant, ça marche nickel. Merci pour vos enseignements
Oui c'est d'un choix pertinent et audacieux, je vous félicite et vous remercie pour ce message.
Merci pour toutes vos vidéos et bonnes games sur Heroes of Might and Magic III ;)
Merci beaucoup. Si je pouvais encore y jouer, j'aimerais tellement. Heureux de rencontrer un fan de ce jeu.
vous êtes très explicite .merci!
C'est très agréable de votre part. Merci à vous pour ce message en retour.
Merci beaucoup! C'est pour moi, très enrichissant.
Je vous en prie Claude et merci à vous pour ce message en retour.
merci bcp pour ce tuto et bonne continuation !!!
Je vous en prie Oussama. Merci à vous pour ce message en retour.
Merci pour cette pour ce cours bien expliqué
Je vous en prie George, merci à vous pour ce retour.
Excellent ...c'est top Merci .
Je vous en prie, merci à vous pour ce retour
Super tes vidéos surtout continu :)
Merci beaucoup
Bonjour Stéphane, je débute en VBA et je trouve votre formation très bien conçue avec une belle avancée progressive ! merci pour tout ce travail.
Petite question de débutant sur cette vidéo : comment Excel sait que le mot "cellule" correspond vraiment à une cellule ?
Pouvez vous réexpliquer le fait de dimensionner la variable cellule en range ? est-ce que c'est cela qui permet à Excel de savoir que "cellule" correspond à 1 seule cellule ?
Bonjour François, je vous remercie pour votre intérêt. Le mot cellule est une variable que nous déclarons en français comme un objet de type Range qui désigne une plage de cellules ou à défaut une cellule unique, précisément dans ce cas, pour les parcourir toutes.
Bonsoir, un grand grand grand merci pour votre travail. C'est très clair. J'ai cependant une question, vous êtes passé asez vite sur la partie du code "frequence = frequence + 1", j'imagine donc que c'est assez simple.. j'aimerais comprendre la logique derrière cette ligne et en quoi cette dernière sert dans ce code.
Après 6 and je ne m'attends pas à une réponse, mais qui ne tente rien n'a rien.. Encore un grand merci.
Bonjour Henri. Bien sûr que je vous réponds. Je continue de développer mes formations. Il s'agit d'une incrémentation systématique dès qu'une comparaison répond positivement pour gonfler le score des redondances. Au premier doublon, frequence vaut 1, au deuxième frequence vaut 2 et ainsi de suite. L'ancien score est mémorisé et gonflé au fil de la découverte. Vous trouverez le pas à pas détaillé et toutes les explications à cette adresse :
www.bonbache.fr/boucle-d-instruction-for-each-en-vba-excel-123.html
Grand merci pour votre retour ! Je comprends mieux.
@@Henr1emanuel Je vous en prie.
Premièrement merci pour ces vidéos.
J'ai une petite question dans l'exemple for each vous n'avez pas initialiser la variable mémoire et malgré ça Excel à pu parcourir la boucle alors que logiquement ça doit afficher une erreur
Bonjour et merci pour votre intérêt. Très bonne remarque. VBA est permissif comme d'autres langages dont le Javascript. Sans l'instruction Option Explicit en entête de code, la déclaration de variables n'est pas imposée. Dès lors, VBA les type à la volée comme des Variant, ce qui coûte plus en ressources. Je l'explique dans les volets suivants. Mais comme ici il s'agit d'une suite de l'introduction, je vais au plus court pour simplifier la prise en main et la compréhension.
désolé mais moi pour que ca fontionne il faut que je mette "if frequence>1" pour que ca fonctionne vous avez une explication ?
Bonjour Guy.
Votre variable frequence ne doit pas être initialisée comme il faut. Après le supérieur à 1 n'est pas idiot pour ne pas considérer la cellule originelle. Mais dans les deux cas, le processus fonctionne admirablement.
Je vous livre le lien du pas à pas détaillé s'il vous intéresse :
www.bonbache.fr/boucle-d-instruction-for-each-en-vba-excel-123.html
Bonjour ! S'il vous plait, par quoi remplacer "For Each" et "xOng", lorsqu'on veut appliquer certains traitements à certaines colonnes choisies de certains onglets choisis ? Merci
Bonjour Xplorer. Le For Each est tout à fait dédié pour parcourir les onglets d'un classeur. For Each Onglet In ThisWorkbook.Sheets...Si vos plages varient d'une feuille à une autre, il faut réaliser des tests pour savoir quand les cellules sont vides et arrêter le traitement.
@ merci. Mais justement j'aimerais que ça ne parcoure pas tous les onglets, juste certains, et juste certaines colonnes ...
@@xplorer3475 Il suffit de faire un test (If) sur les noms des onglets parcourus pour exclure du traitement ceux qui ne sont pas à considérer.
Difficile de penser un autre mot que "parfait"... La progression d'une vidéo à l'autre est très adaptée, de sorte que personne ne devrait être en rade. Merci :-)
Vous m'honorez mon Cher Marcus. Je suis très flatté. J'espère que vous avez autant apprécié la programmation VBA Access car il me semble avoir lu que vous aviez commencé par ces tutos ?
@ J'ai en effet commencé par votre formation en VBA Access, qui m'a justement donnée envie d'explorer davantage vos formations. Mais comme celle d'Access fait appel à certains prérequis, et même si avant tout j'ai besoin de VBA pour Access, je me dis que je ne perds rien à mettre en pause ma progression (je reviendrai plus tard à VBA Access) pour re/voir toutes les bases via votre formation VBA Excel. Et je ne suis pas déçu ! Merci.
@@Salyanov5 Oui tout à fait, vous avez parfaitement raison, c'est volontairement que je ne répète pas en VBA Access ce que j'ai déjà avancé en VBA Excel, en tous cas pour les fondamentaux.
Bonjour, très bonne vidéo comme toujours, par contre à la fin vous envisagiez d’aller plus loin afin de par exemple écrire dans une feuille les valeurs trouvées ainsi que leurs fréquences d’apparition… vous parliez d’aborder cet aspect dans vos futures vidéo et sauf erreur de ma part je ne le trouve pas. Merci pour votre travail.
Bonjour Fred et merci beaucoup pour votre message. Oui, il s'agit d'un exemple potentiel d'exploitation. Au travers des autres formations VBA, nous allons plus loin mais pas nécessairement sur ce terrain en effet. En revanche, sans VBA, la fonction Nb.Si peut être d'une être précieuse pour ce type de synthèse.
Bonjour,
Vos cours sont supers bien faits et intéressants !
J'ai une question, quand je refais ce code sur mon excel, ça me met un message d'erreur "objet requis" quand j'essaye de cliquer sur le bouton. Je n'arrive pas à trouver comment corriger cette erreur, pouvez-vous maider ?
Je vous mets mon code au cas où :
Sub frequence()
Dim cellule As Range: Dim frequence As Byte
Dim ligne As Byte: Dim colonne As Byte
Dim cellule2 As Range
For Each cellule In Selection
frequence = 0
ligne = cellule.Row: colonne = cellule.Column
For Each cellule2 In Selection
If (ligne cellule2.Row Or colonne celulle2.Column) Then
If (cellule.Value = cellule2.Value) Then
frequence = frequence + 1
End If
End If
Next cellule2
If (frequence > 0) Then
cellule.Font.Bold = True
cellule.Font.Size = 11 + frequence * 2
End If
Next cellule
End Sub
Bonjour et merci pour ce message. Pouvez-vous me dire la ligne précise sur laquelle se déclenche ce message d'erreur s'il vous plaît ?
Merci Stéphane, c'est simple et efficace. Pour appliquer ce code à une table qui fait 30 colonnes et 10000 lignes, par quoi faut-il remplacer "BYTE" (erreur 6 dépassement de capacité)? merci !
Bonjour Jérôme et merci pour votre message. La question est intéressante. La raison est simple. Le Byte est l'entier le plus court, question d'optimisation des ressources. Il peut accepter uniquement des valeurs entières comprises entre 0 et 255. Donc pour parcourir toutes les lignes de votre tableau, forcément il faut typer la variable en Integer.
Merci pour la validation de cette information. Vos formations présentent très bien le traitement par des boucles mais souvent il faut s'agit de supprimer la ligne entière lors d'un doublon, comment supprimer individuellement des cellules "doublonnées" (et en garder au moins une) et ignorer les cellules vides ?
@@JEJESAX Avec des tests, si la cellule est vide (="") on laisse la boucle s'incrémenter, si la cellule du dessus propose la même valeur, on supprime celle en cours, donc l'originale est conservée. Mais pour cela, il faut d'abord organiser un tri du tableau.
génial !!!! merci
C'est avec plaisir, surtout de constater que vous suivez la progression VBA Excel, merci beacuoup.
merci beaucoup
Je vous en prie. Merci à vous pour ce message.
❤
Bonjour Stéphane, allez vous faire le même genre de livre pour Power BI ?
Bonjour Clément. Oui c'est prévu mais pas tout de suite car beaucoup de sujets sont en cours.
Bonjour,
Il me semble qu'il y a une petite erreur dans l'exemple donné :
dans le code "If (ligne cellule2.row Or colonne cellule2.Column) then" ce n'est pas un OR qu'il faut mais un AND, car on teste que ce n'est pas la cellule en cours défini par sa ligne et sa colonne.
A part cela, c'est un cours très pédagogique. Bravo...
Bonjour Michel et merci beaucoup pour votre message. Il n'y a pas d'erreur. L'emploi du Or est volontaire. Il suffit que l'une des conditions soit vérifiée pour confirmer qu'il ne s'agit pas de la même cellule à la recherche de doublons.
@ Merci pour votre retour rapide. Vous avez parfaitement raison. Désolé pour mon analyse beaucoup trop rapide.
Il n'y a pas de mal Michel bien au contraire.
Bonsoir Stéphane, déjà un grand merci pour vos vidéos qui sont très bien expliquées et qui permettent aux débutantes comme moi de progresser à leur rythme. Quand j'écris la macro, je n'arrive pas à l'exécuter car ai le message suivant : erreur d'exécution 438 : propriété ou méthode non gérée par cet objet. je sui sous Excel pour Microsoft 365.
Sub frequences()
Dim cellule As Range: Dim frequence As Byte
Dim ligne As Byte: Dim colonne As Byte
Dim cellule2 As Range
For Each cellule In Selection
frequence = 0
ligne = cellule.Row: colonne = cellule.Column
For Each cellule2 In Selection
If (ligne cellule2.Row Or colonne cellule2.Column) Then
If (cellule.Value = cellule2.Value) Then
frequence = frequence + 1
End If
End If
Next cellule2
If (frequence > 0) Then
cellule.front.Bold = True
celulle.front.Size = 11 + frequence * 2
End If
Next cellule
End Sub
Merci pour votre aide
Bonjour Laurence. Merci pour votre message. La version d'Excel n'a pas d'impact. Votre code me semble correct. Il serait bon de connaître la ligne de code surlignée par le débogueur lorsque l'erreur surgit. Il peut aussi s'agir d'un contenu de cellule incorrect parmi celles qui sont sélectionnées et analysées tour à tour. Avez-vous bien pensé à sélectionner les données numériques avant d'exécuter la procédure ?
@ Bonjour Stéphane, je vous remercie d'avoir pris le temps de me répondre. J'ai bien sélectionné les données numériques. Le Sub frequences() était surligné en jaune ....
@@malo8732 Quelque chose m'échappe. Le code est absolument fonctionnel. Si aucune ligne n'est mise en évidence, je ne comprends pas sur quel point un problème est rencontré. Il y a sans doute une anomalie dans la feuille de votre classeur. Parfois, la résolution tient à peu de choses. Je vous invite à tester exactement le même code, dans un autre classeur avec des données numériques nouvelles.
@ J'ai essayé de le reprendre sur un autre PC et j'ai eu le même message d'erreur. Je commence à mieux posséder la fonction débuggage, je le reprendrai demain. Encore un grand merci pour vos cours et votre suivi :)
@@malo8732 Je vous en prie. J'espère que vous règlerez le souci. Il n'y a aucune raison que le code ne fonctionne pas. Il s'agit d'instructions classiques.
Bonjour,
cette ligne de code (suite du cours boucle de votre livre vba ne fonctionne pas et je ne comprends pas pourquoi, pouvez-vous m'aider :
Sub boucles()
Dim der_ligne As Integer: Dim der_colonne As Integer
Dim ligne As Integer: Dim colonne As Integer
der_colonne = Cells.SpecialCells(xlCellTypeLastCell).Column
der_ligne = Cells.SpecialCells(xlCellTypeLastCell).Row
For ligne = 1 To der_ligne
For colonne = 1 To der_colonne
Next colonne
Next ligne
If (ligne > 1) Then
If (Cells(ligne - 1, colonne).Value = "" And Cells(ligne, colonne).Value "") Then
With Cells(ligne, colonne)
.Borders(xlEdgeTop).LineStyle = xlContinous
.Borders(slExdgeTop).Weight = xlThick
.Font.Bold = True
.Interior.Color = RGB(70, 170, 30)
End With
End If
End If
Par avance merci !
Bonsoir Patricia et merci pour votre intérêt. Vous fermez les bornes des boucles de traitement avant même de réaliser les traitements :
For ligne = 1 To der_ligne
For colonne = 1 To der_colonne
Next colonne
Next ligne
Ce n'est pas ce qui est écrit dans le Livre. Le code est fourni par fragments d'abord pour aider à la conception puis il est livré dans sa version finalisée à l'issue du chapitre.
Bonjour, j'adore vos vidéos elles m'aident énormément ! Cependant, je n'ai pas très bien compris l'intérêt de cette étape : ligne cellule2.Row Or colonne cellule2.Column ?
Bonjour Helena et merci beaucoup pour votre message. Le test auquel vous faites allusion est inscrit dans une double boucle. Pour l'évaluation des redondances, il consiste simplement à éviter de comparer la cellule en cours d'analyse à elle même.
C'est quasi majique !
Je le trouve aussi. Merci beaucoup pour ce message.
Bonjour stephane, avez vous svp une page facebook?
Bonjour, oui tout à fait il s'agit de la page : Le Formateur à cette adresse : facebook.com/Sformateur
Désolé je n’ai pas compris pourquoi memoire = memoire & .....
Il s'agit d'un empilement pour stocker toutes les valeurs analysées. Tout est soigneusement expliqué dans le pas à pas détaillé à cette adresse :
www.bonbache.fr/boucle-d-instruction-for-each-en-vba-excel-123.html
Rossetti Stéphane Merci Stephane pour cette réponse rapide!! Je vais aller voir cela. J’avoue que cette video entre dans un niveau de difficulté pour lequel je vais avoir en effet besoin de votre site en plus!! Merci beaucoup (j’ai au passage suivi toute la formation Access minutieusement, tout était parfait!! Encore merci)
Je suis ravi que vous ayez suivi l'intégralité de la formation à Access. Access est déjà un gros morceau. Donc, vous le verrez, avec le site, vous ne devriez pas éprouver de grandes difficultés pour la mise en place du code VBA.
C'est d'une clarté déconcertante....
Merci beaucoup Motor Rd.