Aide sur vba

Bonjour, sur une de mes application vba, je cherche à sélectionner dans un tableau excel la ligne entière de la cellule active, mais le code vb que j'ai ne me donne pas satisfaction.
si quelle qu'un a une proposition à me faire, je suis preneur!!
Merci.

5 réponses

  1. Contributeur
    Bonjour,
    mais le code vb que j'ai ne me donne pas satisfaction.
    Montre ce code qui ne te donne pas satisfaction, nous pourrons probablement le rendre opérationnel.
    En attendant penche toi sur la propriété EntireRow
    A+
    Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
    NOTE : Je ne répond pas aux MP pour les questions techniques.
    0
    1. Merci pour la rapidité de la réponse, mais j'utilise déjà cette propriété.
      Dans mon cas, j'ai un tableau avec des références et des quantités.
      J'ai créer une macro qui me retourne uniquement la valeur de la quantité cumulé de chaque référence.
      Ensuite ma seconde macro supprime les doublons de références.
      Ceci me permet de faire une nomenclature détaillé, et les macros mon font le tableau de commande.

      Or voici le tableau de départ :

      ..... désignation ..... ref..... qte ..... Qte cumulé
      2 ..... crayon bleu ..... cb..... 1 ..... 2
      20 ..... crayon rouge ..... cr..... 9 ..... 20
      46 ..... crayon vert ..... cv..... 6 ..... 46
      20 ..... crayon rouge ..... cr ..... 4 ..... 20
      20 ..... crayon rouge ..... cr ..... 7 ..... 20
      46 ..... crayon vert ..... cv ..... 40 ..... 46
      2 ..... crayon bleu ..... cb ..... 1 ..... 2

      (sur la colonne tout a gauche, j'ai fais un copier/coller de la colonne quantité cumulé)

      et voici le résultat après l'exécution de la macro supprime doublons

      ..... désignation ..... ref ..... qte ..... Qte cumulé
      2 ..... crayon bleu ..... cb ..... 1 ..... 2
      20 ..... crayon rouge ..... cr ..... 9 ..... 46
      46 ..... crayon vert ..... cv ..... 6 ..... 46

      Dans la colonne Qte cumulé, j'ai un décalage qui ce créer lors de la suppression de la ligne, donc mes résultat sont erronés. Et dans la colonne tout à gauche, les résultat sont rester en face de leur référence.

      Ce que je voudrais, c'est que les résultat de la colonne qte cumulé reste en face de leur référence.

      Voici le code vb:

      Sub supprimeDoublons()

      'Récupère l'adresse de la cellule dans une variable MaCellule

      MaCellule = InputBox("Veuillez saisir l'adresse de la 1ere cellule à comparer")

      'Sélectionne la cellule indiquée
      Range(MaCellule).Select

      'Trie le tableau sur cette celule
      ActiveCell.CurrentRegion.Sort Key1:=Range(MaCellule), Order1:=xlAscending, Header:=xlYes

      'mémorise le contenu de la cellule en cours et l'affecte à donnee1
      donnee1 = ActiveCell

      'descend d 'une ligne
      ActiveCell.Offset(1, 0).Select

      'tant que la cellule n'est pas vide
      While ActiveCell <> ""

      'vérifie si le contenu de la cellule en cours est égal à donnee1
      If ActiveCell = donnee1 Then

      'si oui, supprime la ligne entière
      ActiveCell.EntireRow.Delete

      'Private Sub Worksheet_Change(ByVal Target As Range)

      'remonte d'une ligne
      ActiveCell.Offset(-1, 0).Select

      'mémorise à nouveau le contenu de la cellule
      donnee1 = ActiveCell

      'descend d'une ligne
      ActiveCell.Offset(1, 0).Select

      Else

      'mémorise le contenu de la cellule en cours de la ligne suivante et l'affecte à donnee1
      donnee1 = ActiveCell

      'descend d'une ligne
      ActiveCell.Offset(1, 0).Select

      'fin de la vérification
      End If

      'fin de la boucle (on répète les instructions tant que la cellule en cours d'examen contient quelque chose). Sinon, le programme s'arrête
      Wend

      End Sub

      Merci pour vos réponses
      0
      1. bonjour moby 79,

        Essai peut etre d'introduire ce code à la place de ton entirerow, il va selectionner la premiere cellule de la ligne de la cellule active et supprimer alors toute la ligne !

        par exemple:
        ActiveCell.EntireRow.Cells(1).Select
        ActiveCell.EntireRow.Select

        j'espere que ça va t'aider

        boomer
        0
        1. Contributeur
          Re,
          Le plus simple serait que tu mette un classeur à disposition, sur Cjoint.fr par exemple
          Avec une feuille avant modif et une autre feuille qui montrerait le résultat souhaiter.
          Des données fictives bien entendu.
          A+
          Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
          NOTE : Je ne répond pas aux MP pour les questions techniques.
          0