Purger et nettoyer des tableaux Excel en VBA

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

КОМЕНТАРІ • 133

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

    Bonsoir Stéphane,
    La présentation des procédures V B A est accompagnée d'excellentes explications. Félicitations et remerciements de nous faire profiter de ces enrichissements du langage .

    •  7 років тому

      Bonjour Rabah Chaouchi, votre retour est précieux et gratifiant et en ce sens, je vous en remercie infiniment.

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

    Encore merci pour cette formation je ne connaissais pas la programmation vba cela me permet de faire des choses inimaginables avant
    Un grand merci🙏🙏🙏

    •  4 роки тому

      Tout à fait Nicolas. VBA permet de repousser les limites. Merci à vous pour ce témoignage.

  • @jean-marierebois5602
    @jean-marierebois5602 4 роки тому

    Merci pour la clarté et la qualité de la présentation qui vont m'être utile.

    •  4 роки тому

      C'est un plaisir Jean-Marie. Merci beaucoup pour ce message en retour.

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

    Procédures bien intéressantes à réutiliser un peu partout. Merci pour vos explications très claires. Bravo !

    •  4 роки тому

      Bonjour Patricia. C'est un plaisir de recevoir votre ressenti après application. Merci beaucoup.

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

      ​@ 😮😮❤

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

    Super cette formation : ) J'ai découvert votre chaine il y a quelques jours et je l'a trouve super ! Merci encore :)

    •  4 роки тому

      J'en suis ravi M C. Merci à vous d'avoir pris le soin de faire un message en retour.

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

      @ J'ai réessayé votre exercice pour m'entrainer, et j'ai cependant une question subsidiaire : à la ligne der_ligne = cells.specialcells etc, j'ai rajouté - 2 à la fin car je souhaite omettre, par exercice, les deux dernières lignes . Cependant, Excel ne comprend pas la manoeuvre et exécute le code comme si cela n'existait pas ... c'est normal ? J'ai essayé While Ligne < Der_Ligne - 2 et même résultat...

    •  4 роки тому

      ​@@_Greenflag_ Non ce n'est pas normal en effet. Il doit y avoir un problème d'affectation de la variable. Je vous invite à afficher son contenu avant l'exécution de la boucle pour vérifier : MsgBox der_ligne.

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

      @ Je viens de comprendre ce que Excel fait : en fait l'objet cells.specialcells etc commence à compter depuis la première ligne de la feuille (donc il m'affichait 72), alors que mon tableau ne commence pas en ligne 1 mais environ à la 10ème ... Le problème ici c'est que malgrè la correction à DerLigne (ex - 10, MsgBox affiche bien 62) si on a des données qui chevauchent la dernière ligne programmée et qui continuent plus bas, Excel ne tient pas non plus compte de la correction...Excel continue à compter de manière automatique

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

      ​@@_Greenflag_ Oui parce qu'Excel travaille en mémoire. Pour qu'il tienne compte des données ajoutées, il faut d'abord forcer l'enregistrement du classeur ThisWorkbook.Save... et relancer la routine. Là il se positionnera correctement.

  • @KinChris01
    @KinChris01 7 років тому +2

    Merci. Très clair, pédagogique et...UTILE 👍👍👍

    •  7 років тому

      Je vous en prie et merci à vous pour votre retour

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

    Merci enormement pour votre précieuse aide!

    •  3 роки тому

      Je vous en prie Joe. Merci à vous pour ce message.

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

    EXCELLENT, la seconde tout particulierement

    •  6 років тому

      Merci beaucoup Christopher

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

    Parfait, merci beaucoup, Monsieur Rossetti

    •  4 роки тому

      Je vous en prie Imen. Merci à vous pour ce message en retour.

  • @17brunob
    @17brunob 8 місяців тому +1

    nice ! :) , bon on peut aussi commencer la recherche de ligne vide a partir de la ligne 4 , ça simplifie un peu .
    mais comme on dit en prog , pourquoi faire simple quand on peut faire compliqué ;)

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

      Bonjour et merci pour ce message. Tout à fait d'accord avec vous, mais si on part du principe qu'on ne connaît pas les bornes du tableau, il est intéressant d'élargir le champ d'action.

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

    Bonjour M. Rossetti
    Après avoir suivi vos tutos sur excel, je réalise maintenant ceux vu VBA (que j'ai pratiqué il y a une quinzaine d'années).
    Ils demeurent de la même facture (excellente).
    Une petite remarque en ce qui concerne la suppression des lignes vides du tableau : je pense qu'à chaque ligne éliminée du tableau, nous devrions décrémenter la variable derligne d'une unité. Sur des tableaux de grandes dimensions, cela accélérerait le traitement.
    Quoiqu'il en soit, un grand merci et beaucoup de reconnaissance pour votre travail pédagogique.

    •  5 років тому

      Bonjour Stéphane. Je vous remercie beaucoup pour vos compliments et votre soutien. Votre remarque est intéressante. Tous les codes que je propose sont soumis à optimisation et en ce sens, je vous remercie aussi pour cette contribution pertinente.

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

    bonjour,
    pouvez vous nous faire un exemple de remise à zéro d'un compteur de production, par exemple. Merci par avance

    •  2 роки тому

      Bonjour Nacer. Pouvez-vous être plus détaillé s'il vous plaît ?

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

      @ , Bonjour Monsieur,
      Oui, j'ai un tableau dans lequel j'introduit; chaque jour; le tonnage de la matière première utilisée pour la réalisation du produit.
      Pour chaque machine, j'ai un compteur qui me permet, suivant la consommation de la MP, de déclencher une opération de maintenance.
      Une fois l'opération terminée, je dois remettre à zéro le compteur, et repartir pour un nouveau cycle.
      Avec mes remerciement anticipés.

    •  2 роки тому

      ​@@nacermaiza5221 Lorsque l'opération est terminée, je suppose que vous le mentionnez dans une cellule ? Une simple fonction Si évaluant cette valeur permet de réinitialiser le compteur ou à défaut une instruction conditionnelle en VBA.

  • @huguesboussou2308
    @huguesboussou2308 2 роки тому +2

    Salut, merci pour la vidéo, jai beaucoup aimé. Je souhaite l'appliquer à mon fichier, cependant sur ma feuille il y'a 3 différents tableaux. Quand je crée le code vba, il prend en charge seulement le 1er tableau. Besoin d'aide

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

      Bonjour Hugues. Oui c'est ainsi que c'est prévu dans cette formation. Une idée consisterait à donner des noms à chacun de ces tableaux. Puis dans une boucle For Next à parcourir toutes les cellules de chacun (For Each) afin de les nettoyer tour à tour.

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

      @ quelle serait alors la suite du code, pour ce qui est de supprimer les lignes à valeur =0 dans les 3 différents tableaux? Svp

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

      @@huguesboussou2308 Il faudrait que je me plonge dans le code Cher Monsieur. Mais en ce Vendredi soir et j'en suis désolé, je passe en vitesse.

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

      @ si vous avez le temps plus tard, vous pourriez me le transmettre par mail 😊

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

      @@huguesboussou2308 Je reçois de très nombreuses sollicitations Monsieur. Il est très difficile pour moi de m'impliquer pour chacun. Je suis sincèrement navré.

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

    continuer et merci beaucoup

    •  7 років тому

      Bonjour Serge, merci beaucoup pour vos encouragements.

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

      Bonjour
      Aprés avoir adapté votre méthode sur un de mes classeurs je cherche le moyen de quitter mon fichier et excel avec un bouton dans mon sommaire .En vous remerciant de votre aide
      cordialement
      s rodrigues

    •  7 років тому

      Bonjour je peux vous proposer ceci :
      ThisWorkbook.Save
      Application.Quit
      La méthode Save de l'objet ThisWorkbook permet de sauvegarder le classeur pour que la méthode Quit de l'objet Application ne fasse pas apparaître une bonne de message demandant de sauvegarder avant de quitter.

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

    Super merci j’essaie de suite
    dernière question si je voulais que ce ‘’Toto’’ soit une case reference et que l’on puisse changer la valeur par ‘’Tutu’’ ou ‘’Tata’’
    Par avance merci

    •  4 роки тому

      Il faut alors l'inscrire dans une case de la feuille et faire référence à cette case par le code. Il y a aussi la possibilité de demander l'occurrence à l'utilisateur par le biais d'une boîte de message (InputBox). Dès lors, il faut stocker cette valeur en variable et exploiter cette dernière dans le code.

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

    Bonjour
    Très Bonne vidéo
    Pourriez-vous m'indiquer comment créer une macro avec un bouton pour supprimer des lignes d'un tableau d'une feuille 1 à partir d'une liste créée d'une feuille 2. Merci

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

      Bonjour Frédéric. Il vous faut engager deux boucles conjointes. La première scrute la liste. Pour chaque ligne de cette dernière, toutes les lignes du tableau doivent être passées en revue. Dès que la correspondance est trouvée, la ligne doit être supprimée. Même si ce cas ne correspond pas exactement à vos attentes :
      www.bonbache.fr/traitements-de-tableaux-excel-en-vba-pour-les-nettoyer-132.html
      Il démontre comment détecter automatiquement les bornes d'un tableau et à le parcourir pour supprimer les lignes vides.

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

    Super tuto merci,

    •  3 роки тому

      Je vous en prie Bruno. Merci beaucoup pour ce message.

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

      @
      Bonsoir Stéphane,
      J'ai souhaité appliquer la première partie de ce tuto. Néanmoins j'ai plusieurs tableaux sur une même feuille (tous séparés par une colonne vide).
      La macro est collée dans la feuille idoine depuis l'éditeur mais erreur 400. Sachant que 95% du problème se situe entre la chaise et le clavier, sur quoi peu bien porter les 5% restant. Merci pour votre aide.

    •  3 роки тому

      ​@@brunoberard4904 Si les tableaux sont confrontés face à face, cette méthode ne peut fonctionner. Elle supprime les lignes entières. Et j'imagine bien que les lignes à purger diffèrent selon les tableaux. La macro que je propose dans ce sujet est faite pour purger un tableau. Après tout est possible en VBA, détecter les bornes des tableaux, remonter les lignes vers le haut indépendamment etc... J'aimerais vous en dire plus mais je reçois de très très nombreuses sollicitations chaque jour. Difficile donc d'imaginer développer un code pour vous le livrer et j'en suis sincèrement désolé.

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

      @
      Votre réponse à elle seule me va très bien. Je vous remercie du temps alloué à cette réflexion.
      Très bonne continuation.

    •  3 роки тому

      ​@@brunoberard4904 Je vous en prie et merci à vous.

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

    merci beaucoup, je le testerai

    •  7 років тому

      Je vous en prie Rom lef

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

    Bonjour
    j'ai utilisé le code, mais les lignes ne se supprime pas (9minute :57 seconde).
    svp j'ai besoin d'aide

    •  2 роки тому

      Bonjour Mounir.
      Le code est tout à fait fonctionnel.
      Cela signifie qu'il y a surement une petite erreur dans la reproduction.
      Vous avez tout le code et la procédure dans le pas à pas détaillé à cette adresse :
      www.bonbache.fr/traitements-de-tableaux-excel-en-vba-pour-les-nettoyer-132.html

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

    Tuto intéressant! Faut-il quand même préciser que le teste des lignes vides se fait sur la première cellule de la ligne. Par contre, si on veut supprimer les lignes ou il y a au moins une cellule vide, il faut mettre des bordures pour toutes les cellules. Sauf erreur de ma part, j'ai remarque que der_colonne correspond à la dernière colonne non vide , par contre der_ligne correspond à la première ligne vide! Dans tous les cas, votre tuto reste très pratique. Bon courage

    •  4 роки тому

      Bonjour Nour-eddine et merci beaucoup pour votre message. Oui, tout à fait, dans ce cas précis, le test est effectué sur la bordure du tableau. C'est une sorte de sécurité supplémentaire dans l'analyse récursive. der_ligne est bien fixé sur la dernière ligne non vide :
      der_colonne = Cells.SpecialCells(xlCellTypeLastCell).Column
      der_ligne = Cells.SpecialCells(xlCellTypeLastCell).Row
      Encore merci pour votre message.

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

    Salut Mr, et si deux tableaux sont sur une même feuille comment procéder pour supprimer seulement les lignes d'un seul tableau sans impacter l'autre

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

      Bonjour Néo Léo. Dans ces conditions, il faut choisir de décaler les cellules vers le haut et non de supprimer les lignes entières. Si vous créez une macro vous enregistrant en train de simuler ces actions, vous obtiendrez le code VBA à reproduire.

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

      Merci beaucoup

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

      @@triplel6725 Je vous en prie.

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

    Le problème de cette purge, c'est que tu ne peux pas récupérer ton tableau de départ? Une macro?

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

      Bonjour Johan. Le plus simple est d'en faire une copie dans une feuille annexe par le code VBA, avant d'engager le traitement.

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

    Bonsoir monsieur Rossetti ne pourriez vous pas me diriger vers un de vos tutoriels qui expliquerait comment intervertir des lignes dans un tableau par un code vba. Merci

    •  6 років тому

      Bonjour Jacques, Intervertir c'est à dire ? Selon quel critère ? Je ne crois pas avoir encore fait un tuto à ce sujet. J'ai un tuto pour trier les tableaux par le code, ce qui réorganise les lignes : www.bonbache.fr/trier-les-tableaux-par-le-code-visual-basic-203.html mais je ne pense pas qu'il s'agisse de ce que vous souhaitez ?

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

      Rossetti Stéphane bonsoir, non en effet moi ce que je cherche à faire c'est exemple dans une base de données descendre la ligne 2 en ligne via un contrôle toupie par exemple

    •  6 років тому

      Bonsoir Jacques, pouvez vous m'expliquer ce que vous entendez par contrôle toupie ?

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

      Rossetti Stéphane dans les contrôles activex il y a une toupie qui correspond à une flèche montante ou descendante qui permettrait de monter ou descendre une ligne

    •  6 років тому

      Oui il s'agit des barres de défilement, le contrôle ScrollBar. Il n'est pas forcément dédié à ce que vous souhaitez mais vous pourriez le mettre en application en répliquant le code d'une macro à enregistrer, qui couperait la ligne sélectionnée pour l'insérer à un autre emplacement, par clic droit, cette action aurait pour effet de déplacer les autres lignes en conséquence. Vous n'aurez plus qu'à adapter le code fourni par la macro qui à coup sûr exploitera la propriété OffSet de l'objet Range.

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

    Bonjour,
    très bon tuto ! Merci !
    Pour connaître la dernière cellule d'une feuille, j'utilise la fonction "der_ligne = UsedRange.Rows.Count" et "der_colonne = UsedRange.Columns.Count".
    On peut ajouter "Activesheet" en amont de la formule ou nommer la feuille cible directement.
    Est-ce pareil, mieux ou moins bien que la fonction "Cells.SpecialCells(...)" ?
    Merci d'avance.

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

      Bonjour Maduze et merci pour votre message. A mon sens ce n'est ni mieux ni moins bien. Cependant, il faut garder présent à l'esprit la signification de cet objet UsedRange : "Plage utilisée" ou "Plage en cours". Avec la propriété Rows et la méthode Count, la technique conduit au même résultat tant qu'aucune plage n'est sélectionnée et donc que la feuille est considérée dans sa globalité.

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

    après plusieurs essaie je pense avoir compris c'est comme si il garde en mémoire la dernière ligne remplie avant la suppression comment faire pour la rendre dynamique ???

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

      C'est exactement cela. Comme je vous l'ai indiqué dans ma précédente réponse, il faut actualiser sa mémoire en enregistrant le classeur par exemple.

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

      bonjour a vous cher prof merci de me répondre, d'accord donc il faudrait a chaque fois que j'enregistre sous un nouveau nom c'est ça mais c'est quand même un inconvénient ça

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

      Par le code VBA dans l'enchaînement des instructions, c'est automatique.

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

      j'ai pas bien compris ce que vous venez de me dire qu'est ce qui est automatique ??

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

      A l'issue des instructions VBA purgeant le tableau, vous ajoutez l'instruction VBA permettant d'enregistrer le classeur. Ainsi, la mémoire est actualisée automatiquement pour l'indice de ligne.

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

    super

    •  4 роки тому

      Merci à vous.

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

    excellent tuto, l'explication est d'une simplicité, vraiment j'adore mais voilà j'ai une question la fonction Cells.SpecialCells(xlCellTypeLastCell).Row
    , renvoie la dernière ligne non vide, mais bizarrement après avoir supprimé les lignes qui contiennent une valeur inférieur à 0,05 la dernière du tableau est devenu la 17 mais en faisant un msgbox der_ligne il m'affiche 26 alors que normalement je dois avoir 17 j'espère avoir bien expliqué la situation merci

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

      Bonjour Wafaa Azzouni et merci beaucoup pour votre message en retour. Excel travaille en mémoire. Donc il se souvient de la dernière ligne détectée avant modification. Entre les manipulations, il faut forcer l'actualisation de sa mémoire en enregistrant le classeur par exemple.

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

    bonsoir, je voudrai faire la même chose que valeurs car met pas en fonction d'un % mais d'un texte comment modifier la macro, par avance merci

    •  4 роки тому

      Bonjour Nicolas, je n'ai pas bien compris votre souci.

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

    bonsoir stéphane , j'ai suivi la derniere macro de la vidéo avec les doublons j'ai un petit soucis j'ai effectuer comme vous quand je clique sur la macro elle fonctionne mais (elle reste en boucle je suis obligé de la stopper ) deboguage
    Dim ligne As Integer: Dim colonne As Integer
    'point de départ ligne 2 colonne 2
    ligne = 2: colonne = 2
    'designe la plage b2
    ' sort = tri,xlascending= croissant
    'xlascending = croissant
    'Header:=xlYes = tableau avec une ligne d'entete qui ne doit pas etre integrer dans le tri
    Range("B2").Sort Range("B2"), xlAscending, Header:=xlYes
    While Cells(ligne, colonne).Value " "


    'le principe consiste à vérifier que la valeur de la cellule en cours est identique à la valeur de la cellule du dessus. Si c'est le cas, il s'agit d'un doublon
    If (Cells(ligne, colonne).Value = Cells(ligne - 1, colonne).Value And Cells(ligne, colonne).Value " ") Then
    Cells(ligne, colonne).EntireRow.Delete
    ligne = ligne - 1
    End If
    ligne = ligne + 1
    Wend
    End Sub

    •  4 роки тому

      Bonjour Muhammed, vous avez un espace dans votre test (Entre les guillemets) :
      While Cells(ligne, colonne).Value " "
      Donc la condition est toujours vérifiée et la boucle ne se termine jamais.

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

    Mr Rossetti bonjour, voici ma question SVP: b) Nettoyer toute la base de données de façon que dans la colonne “Community” les noms des communautés soient homogénéisés, et créer un tableau représentant les pourcentages des communautés par sexe et par status des bénéficiaires (IDP vs. Host) en utilisant un tableau croisé dynamique; cette technique m'echappe toujours, j'ai un tableau excel avec moi mais je ne sais pas le faire, votre appui svp

    •  4 роки тому

      Bonjour Monsieur, il s'agit de plusieurs questions en une, en l'occurrence même de développement. Tout est possible en VBA pour nettoyer les données et réorganiser l'information. Sur votre demande concrètement, je n'ai pas encore de cas approchant à vous proposer. Mais une fois que ce travail est fait, vous pouvez synthétiser l'information grâce aux TCD, formation que je vous invite à consulter à cette adresse : www.bonbache.fr/tableaux-croises-dynamiques-d-excel-154.html

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

    Sur la dernière procédure, j'ai une erreur "1024" ? Où ai-je bien pu commettre une erreur ? Merci !

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

      Assurez vous que la feuille sur laquelle vous faites le traitement est bien sélectionnée, sinon avant d'utiliser l'objet Cells ou Range, pensez à bien désigner la feuille sur laquelle vous agissez Sheets("Nom_de_la_feuille").cells(ligne,colonne)....

    • @GeorgeBander
      @GeorgeBander 8 років тому +2

      Pardon, idiot que je fais ! Il est exact que si je confond mes feuilles, je ne peux que commettre l'erreur...En tout cas merci pour ce dépannage !! Bonne soirée !!!

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

      C'est avec plaisir, je vous en prie

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

    Bonjour Monsieur Rossetti,
    Je viens de tomber sur votre vidéo et je la trouve très bien expliquée.
    j'ai besoin que vous m'aidiez à écrire un code pour vérifier que toutes les cellules d'une ligne sont vides avant de la supprimer svp?
    Par exemple j'ai la plage(A1:E1) à supprimer mais avant de supprimer je veux me rassurer que chacune des cellues A1 à E1 sont vides dabord.
    Merci par avance

    •  4 роки тому

      Bonjour et merci pour votre message. Vous devez utiliser une boucle For Each pour parcourir toutes les cellules sélectionnées comme démontré dans cette formation :
      www.bonbache.fr/boucle-d-instruction-for-each-en-vba-excel-123.html
      Dim cellule As Range: Dim test As Boolean
      test=True
      For Each cellule In Selection
      if cellule"" then test=false
      Next cellule
      if test=true then Selection.Delete

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

      @ Bonjour Monsieur Rosseti,
      Merci beaucoup pour votre retour.
      je vais essayer la méthode.
      infiniment merci

    •  4 роки тому

      @@hekpazoedouard1105 Je vous en prie

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

      .
      Je rencontre un problème.Lorsque j'ai une plage de cellule par exemple range(A1:E8),c'est toute la plage qui est supprimée et non la ligne(A1:E1) qui est vide.
      Pourriez vous me dire le code que je peux écrire svp?
      Merci par avance à vous.

    •  4 роки тому

      La technique est la même Monsieur. Il faut parcourir les cellules éventuellement avec une boucle for next parcourant les indices de ligne et de colonne précis. J'aimerais vous aider mais je ne pourrai vous fournir les codes souhaités à chacune de vos étapes. Je reçois de très nombreuses demandes chaque jour. Impossible pour moi de m'impliquer pour chacun. J'en suis désolé et j'espère que vous comprendrez.

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

    Bonsoir monsieur je viens de me rendre compte que pour votre deuxième exemple la fonction entirerow me supprimait des formules qui se trouvaient en dehors de mon tableau de ce fait j'ai essayé à la place Rows. Delete ce qui marche parfaitement sauf qu'à la dernière ligne en plus de me supprimer la ligne il me supprime également une colonne dans mon tableau. Est ce que vous auriez une solution ? Merci d'avance

    •  6 років тому

      Bonsoir Jacques, Entirerow supprime effectivement la ligne entière comme l'indique le nom de l'objet VBA et c'est bien voulu dans cette formation. Vous pouvez utilisez la méthode suivante: Selection.Delete Shift:=xlUp L'objet Selection pouvant être remplacer par Range pour désigner les cellules que vous souhaitez.

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

      Rossetti Stéphane merci bcp je vais essayer ça !

    •  6 років тому

      Je vous en prie

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

    Bonjour Monsieur,
    Une toute petite remarque concernant la boucle While (colonne < der_colonne) , si colonne=der_colonne on va pas compiler les lignes de la dernière colonne donc il faut incrémenter la boucle par 1 et faire While (colonne < der_colonne+1).
    En effet, je vous remercie chaleureusement pour ce tuto ça m'a fait gagner beaucoup de temps vu que je travaille sur un tableau [15212,11], ça m'a conservé des heures de travail manuel.
    Merci.

    •  6 років тому

      Bonjour Madame et merci beaucoup pour votre retour. En effet, vous avez tout à fait raison, il convient de repousser la borne

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

      Je vous en prie Monsieur Stéphane,
      J'ai besoin d'aide s'il vous plait, je voulais nettoyer ma feuille excel des valeurs extérieures de l'écart type (56 valeurs ), j'ai redigé le programme si dessus, mais quand je compile ça se compile pas, je sais pas d'oú vient le problème, il ne m'affiche aucun message.
      Merci de m'en faire des propositions.
      J'attend votre retour.
      Sub Suprime()
      Dim i As Integer: Dim r As Integer
      Dim n As Single
      r = 0
      n = 2.6
      If (r < 56) Then
      n = n - 0.1
      For i = 2 To Range("H6562").End(xlUp).Row
      If ((-n * 93.34 > Cells(i, 8).Value Or Cells(i, 8).Value > n * 93.34) And r < 56) Then
      Range(Cells(i, 1), Cells(i, 71)).Delete Shift:=xlUp
      r = r + 1
      End If
      Next i
      End If
      End Sub

    •  6 років тому

      Bonjour Meyrem Zouine, j'essaierai de regarder cela quand j'aurai un peu plus de temps. Impossible pour l'instant. Je ne vous promets rien en revanche car je reçois beaucoup de demandes d'aides auxquelles j'aimerais sincèrement pouvoir répondre, mais c'est compliqué de fait.

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

      Je vous remercie chaleureusement du fait que vous répondiez dans quelques instants; Sinon pour ma question c'est bon c'est resolu.
      Merci encore une fois.

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

    bravoo

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

      Merci beaucoup

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

    Bonsoir monsieur rossetti j'ai utilisé le deuxième exemple de cette vidéo pour supprimer un numéro de facture dans ma base de données afin d'y en ajouter un autre et cela marche parfaitement par contre je voudrais arriver à lancer cette macro à partir d'une autre feuille et la par contre elle ne me supprime plus rien pouvez vous me dire pq? Merci d'avance et bravo encore

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

      Bonsoir Jacques, étant donné que vous changez de feuille, pensez-vous bien à pointer sur les cellules de la bonne feuille par le code VBA ? : Sheets(feuille_destination).cells.... ?

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

      Rossetti Stéphane bonsoir en fait je viens de me rendre compte que qd j'utilise un bouton contrôle de formulaire ça marche parfaitement par contre qd j'indique exactement les mêmes codes dans un bouton contrôle active X la j'ai un débogage est ce normal que le même code marche avec un type de bouton mais pas avec l'autre ?

    •  7 років тому

      Bonjour Jacques, non ce n'est pas normal. Une fois encore, quand vous l'exécutez, êtes vous certain d'être dans le même contexte : Boutons sur des feuilles différentes et code ne pointant pas sur les cellules de la bonne ?

    • @jacquesdupong7971
      @jacquesdupong7971 7 років тому

      Rossetti Stéphane la persévérance paie merci encore pour votre réactivité et votre excellent travail.

    •  7 років тому

      Je vous en prie Jacques, merci à vous pour ce compliment.

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

    Bonjour, tout d'abord merci pour vos vidéos, elle m'ont permis de progresser très vite ! J'ai cependant un souci avec la suppression des lignes vides. En effet lorsque la boucle à supprimé toutes les lignes vides dans une plage, elle va se mettre à tourner sans fin sur la dernière ligne vide de la plage , avec le i (ou variable "ligne" dans votre vidéo) bloqué à cette ligne. Avez-vous une idée d'où cela peut venir ?
    Je vous remercie par avance.

    •  4 роки тому

      Bonjour Raph et merci beaucoup pour votre problème. Je pense que votre variable ligne n'est pas correctement incrémentée dans la boucle. De fait, le critère n'est jamais atteint et la boucle tourne à l'infini :
      While (ligne < der_ligne)
      If (Cells(ligne, colonne).Value

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

    Je veux supprimer des lignes mais à la place du critère 5% cela Serait un texte dans la case comme par exemple ‘’Toto’’

    •  4 роки тому

      Il suffit simplement d'adapter le critère dans l'analyse. Au lieu de

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

    Merci beaucoup pour cette vidéo.
    Par contre, pour la première fois et sauf erreur de ma part, je suis un peu en désaccord avec deux des méthodes proposées.
    1° Je trouve le test pour la suppression des lignes vides assez scabreux, voire dangereux pour une personne qui recopierait seulement ce code. En effet, avoir vide une première cellule de ligne ne signifie pas que la ligne est vide. En ce sens, le code s'occupe des colonnes, mais je ne vois pas trop pourquoi. La seconde partie de votre condition (avoir une bordure continue sur la gauche) sape complètement l'intérêt du parcours des colonnes. Ne vaudrait-il pas mieux ajouter une variable byte qui compte le nombre de cellules vide sur la même ligne ? On teste ensuite si la valeur de cette variable est égale au nombre total de colonnes dans le tableau ; si c'est le cas, alors la ligne est complètement vide et peut être supprimée. Sinon, on ne supprime pas la liste (un message d'erreur pourrait alors être intéressant).
    2° Je trouve risqué le test pour la suppression des doublons. En effet, selon moi, de véritables doublons sont des lignes qui contiennent exactement la même valeur dans toutes les cellules de la ligne. Faire un test uniquement sur la première colonne est la voie ouverte à des suppressions malencontreuses de données. Ne serait-il pas plus intéressant de créer une variable (string, par exemple) qui concatène les valeurs de chaque cellule (converties en texte avec Cstr()) ? Ensuite on fait le test sur cette variable string : si sa valeur est identique à celle de la ligne du dessus, alors il s'agit vraiment d'un doublon et donc on peut supprimer en toute sécurité la ligne.
    Dernièrement, je me pose une question sur la méthode pour le tri. Comment Excel connaît l'ensemble des lignes à trier ? Nulle part on lui demande de faire le tri uniquement sur les valeur du tableau. Excel effectue-t-il alors un tri sur les 300.000 lignes de la feuille ?
    Encore un grand merci et bonne continuation :-)

    •  3 роки тому

      Bonjour Marcus. Je suis absolument d'accord avec l'essentiel de vos remarques. Je vous rappelle néanmoins qu'à ce stade de la progression, nous sommes toujours en phase d'apprentissage. Il s'agit donc de poursuivre la découverte des possibilités offertes par les objets et méthodes VBA au travers de cas simples. En poursuivant la progression, vous constaterez que la rigueur sera de plus en plus de mise. Concernant le tri, Excel connaît parfaitement les bornes des données qu'il doit réorganiser. Une simple rupture dans l'énumération définit la limite du tableau.

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

      @ Mon commentaire était donc "prématuré". Désolé. Au plaisir des autres vidéos.

    •  3 роки тому

      @@Salyanov5 Il est pertinent comme toujours et vous avez parfaitement raison d'avoir avancé ces points.

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

    Puis je avoir votre adresse e-mail ?

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

      Vous pouvez me joindre par le biais de la page contact du site bonbache.

  • @mortallandiaye1469
    @mortallandiaye1469 8 років тому

    Bjr la qualité de la vidéo n'est pas bonne si vous pouvez la reprendre
    salut

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

      Bonjour, vous voulez parler de la qualité de la vidéo ? Car elle est bien en HD. Parfois UA-cam met quelques minutes à l'afficher en qualité HD, selon le débit de la connexion.

    • @mortallandiaye1469
      @mortallandiaye1469 8 років тому +1

      OK merci mais je voulais vous joindre par mail si possible

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

      Bonjour, oui vous pouvez me joindre par le biais de ma page Facebook : facebook.com/Sformateur