IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Isoler deux termes d'une même cellule


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    161
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Mars 2012
    Messages : 161
    Par défaut Isoler deux termes d'une même cellule
    Bonjour,

    Grace à excel j'ai récupérer les données d'un site web pour une petit appli que je fais avec excel en vba. j'ai besoin de récupérer certaines données de ce site pour totalement automatiser mon petit programme.

    J'ai trouvé un tuto qui m'explique comment récupérer les données d'un site web, l'astuce étant de trouver un point commun aux infos que l'on veut sélectionner et grâce à ça faire un copier coller sous condition.

    Sur le site dont j'ai besoin lorsque j'extraie les données du site vers excel je trouve un point commun entre toutes les données masi je ne sais pas comment le demander en vba

    En exemple je vais utiliser une foret
    Dans une foret il y'a A1 = arbres 12 / A2 fleurs 14 etc

    En fait moi j'ai juste besoin du chiffre 12 et 14 sachant que 12 et 14 sont en rouges sur le site et arbres et fleurs en noirs

    Comment puis je sélectionner juste le chiffre 12 et 14 en utilisant leur couleur rouge s'il vous plait?

    Merci d'avance, cordialement

  2. #2
    Membre Expert Avatar de antonysansh
    Homme Profil pro
    Chargé d'études RH
    Inscrit en
    Mai 2014
    Messages
    1 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé d'études RH
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2014
    Messages : 1 115
    Par défaut
    Bonjour nicdodo,

    Je ne sais pas comment récupérer la couleur de certain caractère d'une chaine mais si toutes tes cellules sont de la forme : [un mot][un espace][un nombre]
    Tu peux utiliser le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub test()
     
    Dim rg As Range
    Set rg = ActiveSheet.[A1]
     
    rg.Value = Right(rg.Value, (Len(rg.Value) - InStr(rg.Value, " ")))
     
    End Sub

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    161
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Mars 2012
    Messages : 161
    Par défaut
    Merci pour la réponse je vous envoi le fichier joint pour que vous ayez plus de précision. En fait il faudrait que les nombre en rouges se copie coller de la feuille temp à partir de la première ligne de la feuille Accueil, je n'ai pas forcement besoin que les nombres de RESULTAT par exemple soit en colonne A,B et C ils peuvent juste etre à la suite, je trierai les données par la suite. J'ai juste besoin d'une méthode qui me supprime tous à part les nombres en rouge.

    Mon code qui ne fonctionne pas et celui ci: (je vous le copie pour que vous voyez à peu prés dans l'idée ce que je souhaite faire)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    Sub Macro1()
    '
    ' Macro1 Macro
    '
     
    'Dim rg As Range
        With ActiveSheet.QueryTables.Add(Connection:= _
            "URL;https://www.betclic.fr/monaco-montpellier-m898436", Destination:=Sheets("temp").Range("$A$1"))
            .Name = "monaco-montpellier-m898436"
            .FieldNames = True
            .RowNumbers = False
            .FillAdjacentFormulas = False
            .PreserveFormatting = False
            .RefreshOnFileOpen = False
            .BackgroundQuery = True
            .RefreshStyle = xlInsertDeleteCells
            .SavePassword = False
            .SaveData = True
            .AdjustColumnWidth = True
            .RefreshPeriod = 0
            .WebSelectionType = xlEntirePage
            .WebFormatting = xlWebFormattingAll
            .WebPreFormattedTextToColumns = True
            .WebConsecutiveDelimitersAsOne = True
            .WebSingleBlockTextImport = False
            .WebDisableDateRecognition = False
            .WebDisableRedirections = False
            .Refresh BackgroundQuery:=False
        End With
    ActiveSheet("temp").Select    
    Set rg = ActiveSheet.["A1:F800"]
        compteur = 0
        For i = 1 To 800
        For e= 1 To 7
     
        If rg.Value = Right(rg.Value, (Len(rg.Value) - InStr(rg.Value, " "))) Then
        Sheets("accueil").Cells(compteur, 1) = Sheets("temp").Cells(i, e)
     
    Next
    Next    
    End Sub
    Cordialement
    Fichiers attachés Fichiers attachés

  4. #4
    Membre Expert Avatar de antonysansh
    Homme Profil pro
    Chargé d'études RH
    Inscrit en
    Mai 2014
    Messages
    1 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé d'études RH
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2014
    Messages : 1 115
    Par défaut
    Voilà un code qui cette fois remplace le contenu des cellules d'un range (ici [C2:C21]) par uniquement le contenu en rouge :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    Sub garder_texte_rouge()
        Dim rg As Range: Dim cellule As Range: Dim i As Double: Dim j As Double: Dim res As String
        Set rg = [C2:C21]
     
        For Each cellule In rg.Cells
            res = ""
            j = Len(cellule.Value)
            For i = 1 To j
                If cellule.Characters(i, 1).Font.Color = 255 Then
                    res = res & cellule.Characters(i, 1).Caption
                End If
            Next i
            With cellule
                .Value = res
                .Font.Color = 255
            End With
        Next
    End Sub
    Le problème est que s’il n'y a pas de caractère en rouge, ta cellule devient vide.
    Et j'ai choisi le code couleur 255, tu n'as peut être pas le même rouge.

    Ça peut au moins te mettre sur la route.

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    161
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Mars 2012
    Messages : 161
    Par défaut
    En fait je vais faire par une autre méthode un peu plus longue je pense mais je vais déjà dégrossir mon fichier en essayant de sélectionner les cellules contenant des donnés avec des chiffres. Donc l'idée c'est de chercher dans la 1er colonne de la feuille "accueil" toutes les cellules contenant des chiffres et de copier chaque cellules contenant un chiffre à la suite à la 1er ligne vide de la 1er colonne de la feuille "test". Le problème c'est que mon code ne fonctionne pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    Sub test()
    Dim numlignevide As Integer
     
    numlignevide = ActiveSheet.Columns(1).Find("").Row
    Sheets("accueil").Activate
     
    For i = 1 To 800
    If IsNumeric(Cells(i, 1)) = True Then
     
    Sheets("test").Cells(numlignevide, 1).Value = Sheets("Accueil").Cells(i, 1).Value
     
    End If
    Next
    numlignevide = numlignevide + 1
    End Sub
    Pour séparer les chiffres les chiffres des colonnes j'utiliserais la méthode (donnés/convertir) et je ferai une macro grâce à l'enregistreur (j'ai testé, cette partie fonctionne )

    Pourriez vous juste m'aider pour que mon code fonctionne svp?

  6. #6
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    Bonjour

    peut être faudrait il savoir quelle partie de la page t'intéresse et de capter que celle ci vu que la page arrive en chanbouli avec querytables

    di moi quelle partie t'intéresse de cette page et je te fait un exemple
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  7. #7
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Salut.

    Je ne peux qu'être d'accord avec Prométhée... surtout au vu d'une procédure de 284 lignes...
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  8. #8
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    161
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Mars 2012
    Messages : 161
    Par défaut
    Héhé oui oui, les nationales sont parfois longues. Non mais je vais faire comme vous me conseillez il faut juste que j'apprenne à faire. La c'est juste que je fais mes petits test et du coup ça m'a appris plein de truc notamment, la formule link et scindé une colonne en deux avec l'outils données. J'en ai pas vraiment besoin mais ca me permet d'apprendre sur le tas sans que ça soit trop scolaire. Ça m'apprend la logique du langage info avant de rentrer en formation pour devenir concepteur développeur et pour le coup la ça sera très scolaire

    E tout cas merci pour votre aide sincerement

  9. #9
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut
    Bonsoir Pierre Fauconier

    c'est exactement ce que je lui ai proposé mais ca lui parait trop compliqué et étant donné que les classe des éléments ne sont pas distinguable ou alors difficilement ,j'ai trouvé un moyen beaucoup plus simple

    repérer les éléments qui ont le innertext correspondant au titre de chaque tableaux

    et utiliser element.parentnode.parentnode qui nous donne chaque tableaux en entier

    un getelementsby..... sur chaque tableaux et voila

    re
    je viens encore d'essayer d'y aller et c'est d'autant plus difficile car il doit y avoir une certaine heure pour les visites ;au delà des heures prévu la page est redirigée vers une autre page avec des données plus générales mais ne correspondant plus au tableau que donnait son URL hier midi
    donc walouh.....
    ca m'étonnerait que son system fonctionne longtemps

    nicodo
    A tu seulement remarqué que ta macro avec le querytables ne donnait plus la même chose sur le sheet?????????qu'hier

    a mon avis aussi il va te falloir organiser autrement
    les données que tu récupère devront peu être pris sur une autre page du site betclic

    ou alors donne moi le lien qui t'envoie sur les mêmes données qu'hier
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2010] Séparer deux termes d'une même colonne non séparé
    Par Creabrazion dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 13/11/2014, 21h19
  2. Deux classes CSS pour une même cellule d'un tableau
    Par bernidupont dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 04/05/2011, 22h34
  3. macro pour remplire une liste dans une même cellule
    Par fabiend83 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 17/07/2006, 10h32
  4. VMR9 : deux vidéos != dans une même fenêtre.
    Par LapinGarou dans le forum MFC
    Réponses: 4
    Dernier message: 12/04/2006, 20h45
  5. installation de deux serveurs sur une même machine
    Par desdak dans le forum Installation
    Réponses: 1
    Dernier message: 30/06/2005, 00h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo