Une valeur un peu trop rebelle

stid59

XLDnaute Nouveau
Bonjour à tous,

Je viens vous solliciter car il y a une valeur que je n'arrive pas à supprimer et je ne comprends pas pourquoi ... les données du fichiers sont prises à partir d'un site web. Pour les actualiser il faut exécuter la macro2. Pour commencer la mise en forme des données, je veux supprimer les lignes qui contiennent les mots "Page(s)", "Précédent" et "Suivant". J'arrive à tout supprimer sauf la ligne 190 qui contient le dernier Suivant.

Est ce que quelqu'un arriverait à me supprimer ce Suivant rebelle ?

MErci d'avance.
 

Pièces jointes

  • nodshop.zip
    29.7 KB · Affichages: 35
  • nodshop.zip
    29.7 KB · Affichages: 37
  • nodshop.zip
    29.7 KB · Affichages: 36

JCGL

XLDnaute Barbatruc
Re : Une valeur un peu trop rebelle

Bonjour à tous,

Je n'ai réussi à trouver...
J'ai doublé la dernière boucle... :p

Code:
[COLOR=BLUE]Sub[/COLOR] Mise_en_Forme()

   [COLOR=GREEN] 'supprimer les espaces[/COLOR]
    [COLOR=BLUE]Dim[/COLOR] i [COLOR=BLUE]As Integer[/COLOR]
    [COLOR=BLUE]Dim[/COLOR] j [COLOR=BLUE]As Integer[/COLOR]
    [COLOR=BLUE]Dim[/COLOR] k [COLOR=BLUE]As Integer[/COLOR]
    [COLOR=BLUE]Dim[/COLOR] DerL [COLOR=BLUE]As Integer[/COLOR]
    DerL = Range("A65536").End(xlUp).Row
        
    Application.ScreenUpdating = 0
    
    [COLOR=BLUE]For[/COLOR] i = DerL [COLOR=BLUE]To[/COLOR] 1 Step -1       [COLOR=GREEN] 'boucle qui parcours toutes les lignes de la dernière à la première[/COLOR]
        [COLOR=BLUE]If[/COLOR] Cells(i, 1).Value = "" [COLOR=BLUE]Then[/COLOR] Rows(i).Delete       [COLOR=GREEN] 'si la cellule est vide alors on la supprime[/COLOR]
    [COLOR=BLUE]Next[/COLOR] i
   [COLOR=GREEN] 'calcul du nombre de cellules non vides[/COLOR]
    j = 1
    Range("A" & j).Select
    [COLOR=BLUE]Do While[/COLOR] Range("A" & j).Value <> ""
        j = j + 1       [COLOR=GREEN] 'tant que la cellule Fj n'est pas vide, on passe à la cellule en dessous[/COLOR]
    [COLOR=BLUE]Loop[/COLOR]
    
    Range("B1:B" & DerL).Formula = "=LEFT(RC[-1],7)"
    
    [COLOR=BLUE]For[/COLOR] k = 1 [COLOR=BLUE]To[/COLOR] j - 1
        [COLOR=BLUE]If[/COLOR] Range("B" & k).Value = "Page(s)" [COLOR=BLUE]Or[/COLOR] _
                Range("B" & k).Value = "Précéde" [COLOR=BLUE]Or[/COLOR] _
                Range("B" & k).Value = "Suivant" [COLOR=BLUE]Then[/COLOR] Rows(k).Delete
    [COLOR=BLUE]Next[/COLOR] k
    
    [COLOR=BLUE]For[/COLOR] k = 1 [COLOR=BLUE]To[/COLOR] j - 1
        [COLOR=BLUE]If[/COLOR] Range("B" & k).Value = "Page(s)" [COLOR=BLUE]Or[/COLOR] _
                Range("B" & k).Value = "Précéde" [COLOR=BLUE]Or[/COLOR] _
                Range("B" & k).Value = "Suivant" [COLOR=BLUE]Then[/COLOR] Rows(k).Delete
    [COLOR=BLUE]Next[/COLOR] k
[COLOR=BLUE]End Sub[/COLOR]
A+ à tous
 
G

Guest

Guest
Re : Une valeur un peu trop rebelle

bonjour Stid,
Hi JC:):)

Proposition:

Je ne me suis occupé que du problème des suppressions de lignes vides et la suppression des lignes contenants les mots voulus.
Pour le reste j'ai pas compris le résultat attendu par
Code:
For k = 1 To j - 1
        Range("B" & k).Select
        ActiveCell.FormulaR1C1 = "=LEFT(RC[-1],7)"
    Next k
Qui ecrase les données déjà existantes en B

Code:
Sub Truc()
    Dim t: t = Array("Page(s)", "Précéde", "Suivant")
    Dim i As Integer
    Dim adr1 As String
    Dim c As Range
    Dim PlageToDelete As Range
    With Range("A1:A" & Range("A65536").End(xlUp).Row)
        On Error Resume Next    'Au cas où il n'y ait pas de cellule vides
        .SpecialCells(xlCellTypeBlanks).EntireRow.Delete
        On Error GoTo 0
        With .Resize(, 2)
            For i = 0 To 2
                adr1 = ""
                Set c = .Find(What:=t(i), After:=.Cells(1), LookIn:=xlValues, LookAt:=xlPart, MatchCase:=False, searchDirection:=xlNext)
                If Not c Is Nothing Then
                    adr1 = c.Address: Debug.Print adr1
                    Do
                        If PlageToDelete Is Nothing Then
                            Set PlageToDelete = c
                        Else
                            Set PlageToDelete = Union(PlageToDelete, c)
                        End If
                        Set c = .FindNext(c)
                    Loop While Not c Is Nothing And c.Address <> adr1
                    Set c = Nothing
                End If
            Next i
            If Not PlageToDelete Is Nothing Then PlageToDelete.EntireRow.Delete
        End With
    End With
End Sub

A+
A++ Jean-Claude:)
 

Habitude

XLDnaute Accro
Re : Une valeur un peu trop rebelle

trop de boucle à mon avis
Ceci devrait faire l'affaire

Code:
Sub mise_en_forme()
    Dim i As Long
    For i = Range("A65536").End(xlUp).Row To 1 Step -1 
        With Range("A" & i).Offset(, 1)
        .Value = "=LEFT(RC[-1],7)"
        If .Value = "" Or .Value = "Page(s)" Or .Value = "Précéde" Or .Value = "Suivant" Then Rows(i).Delete
        End With
    Next i
End Sub
 

Habitude

XLDnaute Accro
Re : Une valeur un peu trop rebelle

Peut-être même a mon avis la colonne B est superflus

Code:
Sub mise_en_forme()
    Dim i As Long
    Dim v As String
    For i = Range("A65536").End(xlUp).Row To 1 Step -1
        v = Left(Range("A" & i), 7)
        If v = "" Or v = "Page(s)" Or v = "Précéde" Or v = "Suivant" Then Rows(i).Delete
    Next i
End Sub
 

stid59

XLDnaute Nouveau
Re : Une valeur un peu trop rebelle

Bonjour à tous et merci pour vos réponses :)

Hasco est ce que tu te souviens qu'il y a quelques jours j'avais fait une autre discussion sur le même principe : prendre des données du web et les mettre en forme mais pour un autre fichier. Tu avais fait un code au cas ou la connexion ne fonctionnait pas, elle se recréé. J'ai essayé de reprendre le même code et l'adapter pour ce nouveau fichier mais lorsque je lance le code rien ne se passe...est ce que tu sais pourquoi ?

MErci
 
G

Guest

Guest
Re : Une valeur un peu trop rebelle

bonjour Stid59,
JC:)

J'ai regardé la procédure dans le module de feuille "Gadget"
Stid, il suffit de changer le numéro de la propriété WebTables de la requête, je te laisse chercher comment tu peux le trouver.

De plus la procédure n'est pas à mettre dans un module de feuille mais un module général ou alors il ne faut pas sélectionner une autre feuille.

A+
 

stid59

XLDnaute Nouveau
Re : Une valeur un peu trop rebelle

Pour les connexions ça fonctionne :)

Un autre problème que je n'arrive pas à résoudre : je veux supprimer la 1ère ligne, garder les lignes 2 et 3 et supprimer les lignes 4 et 5 et ainsi de suite (supprimer la 6ème ligne, garde la 7 et 8ème et supprimer la 9 et 10ème...)
Avec l'assistant macro ça donne ceci :

Rows("1:1").Select
Selection.Delete Shift:=xlUp
Rows("3:5").Select
Selection.Delete Shift:=xlUp
Rows("5:7").Select
Selection.Delete Shift:=xlUp
Rows("7:9").Select
Selection.Delete Shift:=xlUp

J'aimerai donc faire une boucle en remplaçant les chiffres par des variables mais je n'arrive pas à trouver le bon code à mettre dans Rows(). J'ai essayé Rows(var1 & ":" & var2).Select mais il y a une erreur indiquant qu'il manque un séparateur de liste
 

stid59

XLDnaute Nouveau
Re : Une valeur un peu trop rebelle

Je ne comprends pas pourquoi chez moi ça ne va pas :(

Je mets le fichier en pièce jointe pour avoir une meilleur vision du problème. Le code est dans la macro mise_en_forme() tout en bas.

Merci
 

Pièces jointes

  • nodshop.zip
    25.1 KB · Affichages: 22
  • nodshop.zip
    25.1 KB · Affichages: 24
  • nodshop.zip
    25.1 KB · Affichages: 22
G

Guest

Guest
Re : Une valeur un peu trop rebelle

Bonjour Stid,

voici une façon plus simple de faire en important les données au format RTF.

J'espère que tu arriveras à comprendre car pour moi c'est la dernière fois que j'y touche, je ne veux pas avoir à refaire trente-six fois le même travail.

A+

[Edit] Oups!!!! le zip était vide, le voilà rechargé
 
Dernière modification par un modérateur:

JCGL

XLDnaute Barbatruc
Re : Une valeur un peu trop rebelle

Bonjour à tous,
Salut Hasco,

N'apporte rien à la discussion...
Si ce n'est que le plaisir de croiser l'ami Ges à qui j'adresse un :

Patience et longueur de temps
Font plus que force ni que rage....

"Le Lion et le Rat. Jean de La Fontaine"

Arf... Arf...

A++ l'ami Ges
A+ à tous
 

Discussions similaires

Réponses
2
Affichages
143

Statistiques des forums

Discussions
312 503
Messages
2 089 055
Membres
104 013
dernier inscrit
VELONDAHY Mickaël