Aide sur vba

moby79 Messages postés 17 Statut Membre -  
moby79 Messages postés 17 Statut Membre -
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. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    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
  2. moby79 Messages postés 17 Statut Membre
     
    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
  3. boomer
     
    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
  4. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question