Comparaison et selection
Résolu/Fermé
dianbobo
Messages postés
151
Date d'inscription
mardi 20 avril 2010
Statut
Membre
Dernière intervention
15 juin 2014
-
12 mai 2010 à 14:29
dianbobo Messages postés 151 Date d'inscription mardi 20 avril 2010 Statut Membre Dernière intervention 15 juin 2014 - 12 mai 2010 à 19:02
dianbobo Messages postés 151 Date d'inscription mardi 20 avril 2010 Statut Membre Dernière intervention 15 juin 2014 - 12 mai 2010 à 19:02
A voir également:
- Comparaison et selection
- Comparaison million milliard - Accueil - Technologies
- Logiciel comparaison photo gratuit - Télécharger - Photo & Graphisme
- L'indice n'appartient pas à la sélection vba - Forum VB / VBA
- Variable workbook : l'indice n'appartient pas à la sélection ✓ - Forum Excel
- Excel rechercher et remplacer dans une selection ✓ - Forum Excel
9 réponses
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
12 mai 2010 à 18:52
12 mai 2010 à 18:52
Beh ton message y vient de la ligne
Supprime la, elle ne sert pas dans la macro si ce n'est d'avertissement.
A+
msgbox "Cellule " & cell.Address & " sans correspondance dans MC",
Supprime la, elle ne sert pas dans la macro si ce n'est d'avertissement.
A+
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
12 mai 2010 à 15:33
12 mai 2010 à 15:33
Bonjour,
Je ne sais pas si j'ai bien tout compris ?
Fait quand même une copie de ton classeur avant de tester...
A+
Je ne sais pas si j'ai bien tout compris ?
Fait quand même une copie de ton classeur avant de tester...
Sub Bouton1() Dim Lig As Long With Sheets("synthèse") While Cells(Lig, 1) <> "" If .Cells(Lig, 1) = Sheet("MC").Cells(Lig, "G") Then .Cells(Lig, "AA") = "tf" Lig = Lig + 1 Else Rows(Lig).Delete End If Wend End With End Sub
A+
dianbobo
Messages postés
151
Date d'inscription
mardi 20 avril 2010
Statut
Membre
Dernière intervention
15 juin 2014
1
12 mai 2010 à 16:01
12 mai 2010 à 16:01
j'ai essayé
il y a eu un premier message d'erreur
a la ligne 5 de ton code sheets au lieu de sheet
j'ai relancé le code mais il m'indique toujours un message d'erreur
du type "X 400"
pour mieux comprendre ce que j'essaie de faire :
j'ai une feuille nommé "synthèse" qui a une colonne A51 a A425
DANS chacune des cellules de la colonne A51 a A425 j'ai un nombre entier
le but c'est de conserver ces lignes ou pas en faisant donc la chose suivante :
je recherche a la colonne G de la feuille "MC" chacun des nombres de la colonne A51 a la colonne A425 une fois le nombre est trouvé
alors sur la meme ligne je vais a la colonne AA toujours dans la feuille "MC" si j'ai le caractere "TF" ALORS JE conserve la ligne correspondante au nombre dans ma feuille "synthese" sinon je l'efface
j'espere avoir eté un peu plus clair.
merci de votre aide
il y a eu un premier message d'erreur
a la ligne 5 de ton code sheets au lieu de sheet
j'ai relancé le code mais il m'indique toujours un message d'erreur
du type "X 400"
pour mieux comprendre ce que j'essaie de faire :
j'ai une feuille nommé "synthèse" qui a une colonne A51 a A425
DANS chacune des cellules de la colonne A51 a A425 j'ai un nombre entier
le but c'est de conserver ces lignes ou pas en faisant donc la chose suivante :
je recherche a la colonne G de la feuille "MC" chacun des nombres de la colonne A51 a la colonne A425 une fois le nombre est trouvé
alors sur la meme ligne je vais a la colonne AA toujours dans la feuille "MC" si j'ai le caractere "TF" ALORS JE conserve la ligne correspondante au nombre dans ma feuille "synthese" sinon je l'efface
j'espere avoir eté un peu plus clair.
merci de votre aide
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
12 mai 2010 à 16:43
12 mai 2010 à 16:43
essaie avec..
Si tu a encore une erreur met le N° mais aussi le libellé de l'erreur.
Sub Bouton1() Dim Lig As Long, LigG As Long, DerLigG As Long Dim C As Variant DerLigG = Sheets("MC").Range("G65535").End(xlUp).Row With Sheets("synthèse") While Cells(Lig, 1) <> "" C = .Cells(Lig, 1) For LigG = 1 To DerLigG If C = Sheets("MC").Cells(LigG, "G") Then If Sheets("MC").Cells(LigG, "AA") = "tf" Then Lig = Lig + 1 Else .Rows(Lig).Delete End If Exit For End If Next LigG Wend End With End Sub
Si tu a encore une erreur met le N° mais aussi le libellé de l'erreur.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
dianbobo
Messages postés
151
Date d'inscription
mardi 20 avril 2010
Statut
Membre
Dernière intervention
15 juin 2014
1
12 mai 2010 à 17:04
12 mai 2010 à 17:04
voila j'ai réessayé
j'ai la meme erreur
en fait c'est une boite de dialogue intitulée Microsoft visual basic
x 400
ok aide
rien d'autre ne s'affiche
j'ai la meme erreur
en fait c'est une boite de dialogue intitulée Microsoft visual basic
x 400
ok aide
rien d'autre ne s'affiche
dianbobo
Messages postés
151
Date d'inscription
mardi 20 avril 2010
Statut
Membre
Dernière intervention
15 juin 2014
1
12 mai 2010 à 17:26
12 mai 2010 à 17:26
peu tu stp m'expliquer les lignes de ton code
pour savoir s'il fait bien ce que je veux
merci
pour savoir s'il fait bien ce que je veux
merci
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
12 mai 2010 à 17:39
12 mai 2010 à 17:39
Faut d'abord liquider cette erreur.
Restart le code et clic sur aide, fait un copier/coller de la page d'aide.
Restart le code et clic sur aide, fait un copier/coller de la page d'aide.
dianbobo
Messages postés
151
Date d'inscription
mardi 20 avril 2010
Statut
Membre
Dernière intervention
15 juin 2014
1
12 mai 2010 à 18:43
12 mai 2010 à 18:43
j'ai réessayé malheusement ma page d'aide ne m'affiche rien du tout
du coup jai testé un autre code
il fonctionne mais trop lent car il verifie si chaque cellule de la colonne A a bien un correspondant a la colonne G de la feuille "MC"
donc il y a une boite de dialogue qui s'affiche a chaque fois qu'il n'y pas de correspondance et moi je dois cliquer dessus pour pouvoir avancer
du coup s'il y a 10000 cellules a tester de sera donc penible ..!!
si quelqu'un peu bien me donner de l'aide sur ce code
merci
avant tout sachez que :
j'ai testé le code je croix qu'il est bon mais il y a un soucis par rapport a deux choses
premierement ma feuille synthese est un filtre que j'ai réalisé via un code
du coup dans ma feuille synthese il y a des lignes qui n'existent pas ma premiere cellule est donc A51 mais peu etre A30 car ça depend du fichier source qui n'a toujours pas le meme nombre de valeurs à trier.
donc ma premiere valeur et en A51 par exemple et la derniere
A200 par exemple mais il y a supression de certaines lignes entre A51 ET A200..
aussi dans la feuille "MC" c'est a partir de G2 que les nombres commencent
donc quand j'ai executé le code j'ai eu le message d'erreur ci-dessous DANS UNE BOITE DE DIALOGUE appelée "ANOMALIE"
" cellule $A$1 sans correspondance dans MC
lorsque je clic sur OK ça me fais passé a la cellule suivante .. et ainsi de suite .. jusqu'a ce que je parcours toute la colonne "A" mais si j'ai une colonne A a 1000 cellules ça devient penible
sinon j'ai supression des lignes ça signifie que le code m'efface bien ce que je veux ...
merci de votre aide POUR LE RENDRE PLUS EFFICACE
du coup jai testé un autre code
Sub Bouton1() Dim rngBF1 As Range, rngBF2 As Range dim vLig as long Application.ScreenUpdating = False 'définition de la plage sur la feuille synthèse (ici de A1 à la dernière cellule remplie) : Set rngBF1 = Sheets("synthèse").Range("A1:" & Sheets( _ "synthèse").Cells(Rows.Count, 1).End(xlUp).Address) 'définition de la plage sur la feuille MC (ici de G1 à la dernière cellule remplie) : Set rngBF2 = Sheets("MC").Range("G1:" & Sheets( _ "MC").Cells(Rows.Count, 7).End(xlUp).Address) For Each cell In rngBF1 If Not IsError(Application.Match(cell, rngBF2, 0)) Then vLig = Application.Match(cell, rngBF2, 0) 'vLig = n° de la ligne trouvée dans la feuille MC If Sheets("MC").Range("AA" & vLig) = "TF-Post" Then 'on ne fait rien Else Sheets("synthèse").Rows(cell.Row).Delete End if Else Application.ScreenUpdating = True cell.Select msgbox "Cellule " & cell.Address & " sans correspondance dans MC", vbokonly + vbcritical, "Anomalie" End If Next Application.ScreenUpdating = True End Sub
il fonctionne mais trop lent car il verifie si chaque cellule de la colonne A a bien un correspondant a la colonne G de la feuille "MC"
donc il y a une boite de dialogue qui s'affiche a chaque fois qu'il n'y pas de correspondance et moi je dois cliquer dessus pour pouvoir avancer
du coup s'il y a 10000 cellules a tester de sera donc penible ..!!
si quelqu'un peu bien me donner de l'aide sur ce code
merci
avant tout sachez que :
j'ai testé le code je croix qu'il est bon mais il y a un soucis par rapport a deux choses
premierement ma feuille synthese est un filtre que j'ai réalisé via un code
du coup dans ma feuille synthese il y a des lignes qui n'existent pas ma premiere cellule est donc A51 mais peu etre A30 car ça depend du fichier source qui n'a toujours pas le meme nombre de valeurs à trier.
donc ma premiere valeur et en A51 par exemple et la derniere
A200 par exemple mais il y a supression de certaines lignes entre A51 ET A200..
aussi dans la feuille "MC" c'est a partir de G2 que les nombres commencent
donc quand j'ai executé le code j'ai eu le message d'erreur ci-dessous DANS UNE BOITE DE DIALOGUE appelée "ANOMALIE"
" cellule $A$1 sans correspondance dans MC
lorsque je clic sur OK ça me fais passé a la cellule suivante .. et ainsi de suite .. jusqu'a ce que je parcours toute la colonne "A" mais si j'ai une colonne A a 1000 cellules ça devient penible
sinon j'ai supression des lignes ça signifie que le code m'efface bien ce que je veux ...
merci de votre aide POUR LE RENDRE PLUS EFFICACE
dianbobo
Messages postés
151
Date d'inscription
mardi 20 avril 2010
Statut
Membre
Dernière intervention
15 juin 2014
1
12 mai 2010 à 19:02
12 mai 2010 à 19:02
VOILA j'ai essayé ça marche bien
merci encore
merci encore