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
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
A voir également:
- Aide sur vba
- Vba récupérer valeur cellule ✓ - Forum VB / VBA
- Mkdir vba ✓ - Forum VB / VBA
- Excel compter cellule couleur sans vba - Guide
- Vba range avec variable ✓ - Forum VB / VBA
- Vba dépassement de capacité ✓ - Forum Excel
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
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.
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.
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
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
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
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
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
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
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.
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.
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
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.
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.