Aide sur vba

Fermé
moby79 Messages postés 16 Date d'inscription mardi 1 mars 2011 Statut Membre Dernière intervention 19 mars 2012 - 11 mars 2012 à 14:36
moby79 Messages postés 16 Date d'inscription mardi 1 mars 2011 Statut Membre Dernière intervention 19 mars 2012 - 19 mars 2012 à 19:51
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

lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
Modifié par lermite222 le 11/03/2012 à 14:44
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
moby79 Messages postés 16 Date d'inscription mardi 1 mars 2011 Statut Membre Dernière intervention 19 mars 2012
Modifié par moby79 le 11/03/2012 à 17:48
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
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
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
Modifié par lermite222 le 12/03/2012 à 01:38
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
moby79 Messages postés 16 Date d'inscription mardi 1 mars 2011 Statut Membre Dernière intervention 19 mars 2012
19 mars 2012 à 19:51
Bonjour, désoler pour le retard de ma réponse, mais voici deux liens:
Le premier avant l'exécution de la macros supprime doublon : https://www.cjoint.com/?0CttWR5Wdrp

et le second après : https://www.cjoint.com/?0CttZqoexLy

Merci pour vos réponses.
0