Impossible à changer la ligne de départ

Bonjour,

Je l'ignorais mais il semble que les webapi basé sur du xml ne sont pas figées lorsqu'on récupère les informations dans excel, du coup pas très pratique quand les colonnes que l'on souhaite récupéré passent de A à B et de C à D, mais les intitulés restent les mêmes.

Par conséquent, j'ai besoin que ma macro débutent en ligne 3 plutôt que 1, mais cela ne marche pas, j'ai toujours un message d'erreur indiquant que l'intitulé n'est pas trouvé.

Je vous joins le fichier de test.

Pour tester il est nécessaire de remplacer les intitulés de la ligne 3 par ceux en jaunes dans la lignes 1 (même colonne). La partie de code qui me pose problème est dans la première boucle, le restant étant 100% fonctionnel.

Sub Reorganisation()

Dim Tbl(), ac, k, Col, i%, j%, n%

ac = Worksheets("Feuil1").Range("A1").CurrentRegion

'Traitement Adresse MAC

Col = Array("N°serie", "Adresse MAC"): k = Array(0, 0)

For i = 1 To UBound(ac, 2)

'remplacer 1 ci-dessous par ligne d'en-tête si pas 1 - Ne marche pas. Si je met la première valeur (AC3, I), il ne trouve pas l'adresse mac, si je met les 2 valeurs AC a 3, il ne trouve pas le numéro de série

If ac(1, i) = Col(0) Then

k(0) = i

ElseIf ac(1, i) = Col(1) Then

k(1) = i

End If

Next i

For i = 0 To 1

If k(i) = 0 Then

MsgBox Col(i) & " non détecté !" & Chr(10) & "Vérifier.", vbCritical, _

"Intitulé manquant"

Exit Sub

End If

Next i

Merci pour vos retours.

21caracpl.xlsm (39.92 Ko)

bonjour

https://docs.microsoft.com/fr-fr/power-bi/desktop-tutorial-importing-and-analyzing-data-from-a-web-page

ceci est vrai aussi pour Power Query et Excel

essaye avec ce lien

https://fr.vikidia.org/wiki/Liste_des_pays_par_population

magique !

pas de VBA, pas une ligne de code

amitiés

Je ne connaissais pas, je vais m'y pencher.

Maintenant, je suis curieux et j'aimerais trouver une solution sur mon code, histoire de continuer a progresser.

Bonjour à tous,

Un essai ... si j'ai bien compris ...

ric

Hello,

Non ça ne marche pas. Les intitulés de la première ligne sont juste la pour faire joli.

Pour résumé, les bons intitulés sont ceux de la ligne 3 et changent de colonne régulièrement.

re

je n'ouvre pas les macros

il faudrait donc donner l'adresse du lien à ouvrir

Tu ne les ouvre pas par sécurité?

Malheureusement, c'est l'URL d'un serveur interne.

Après, il s'agit d'un simple module le code est desactivé à l'ouverture du fichier. ^^

re

URL sur serveur interne... ça veut dire qu'on ne peut pas faire de tests (macro ou pas macro)

Ben si, c'est pour ca que je fournis un fichier avec des données et que j'explique que les intitulés avec les data en dessous peuvent bouger.

L'element central de la macro est l'intitulé : "/body/r/c3", pb après rafraîchissement des donnée l'intitulé et ses données peuvent passer en colonne "H", et le lendemain revenir en "G". Idem pour toutes les informations en jaunes que je cherche a remettre en forme avant import.

La seule chose de fixe : le numéro de la ligne départ : 3.

Bon pour tester, j'avoue que c'est pas facile, mais le vrai problème est de fixer la ligne 3 et ses intitulés comme marqueur de départ. Les informations de la première ligne sont juste la car plus parlante que des nom exporté depuis le rapport xml.

Bonjour,

Une proposition pour le principe (après import).

Réalisé avec récupérer et transformer (Power Query).

Cdlt.

10pinpin.xlsx (27.00 Ko)

nota: je viens de voir que l'import était un xml. On peut travailler à partir de celui-ci !...

Bonjour à tous,

j'avoue avoir eu un peu de mal à comprendre tes explications.

En fait tu veux juste connaitre la position de tes champs en ligne 1 (?)

Autre façon de faire si j'ai bien compris :

    For i = 0 To UBound(Col)
        Set c = Rows(1).Find(Col(i), , xlValues, xlWhole)
        If c Is Nothing Then
            MsgBox Col(i) & " non trouvé": Exit Sub
        Else
            k(i) = c.Column
        End If
    Next i
    Set c = Nothing

eric

Edit

Mais si N°serie est toujours 2 colonnes avant Adresse MAC, tu peux rechercher mac_address en ligne 3 et te baser dessus :

Set c = Rows(3).Find("mac_address", , xlValues, xlPart)

Aie aie, je dois etre mauvais dans mes explications.

Actuellement, j'ai la ligne 1 avec de "faux entête"

La ligne 3 est le vrai départ et se sont les bons entête.

Les colonnes ne sont pas figées. Ce qui veut dire qu'on doit d'abord chercher les entete en ligne 3 pour ensuite appliquer le reste de la macro. Ca marche très bien en ligne 1, et application des données a partir de la ligne 4, mais des que j'indique la ligne 3 comme début (en mettant les bons entete), il me dit qu'il ne les trouvent pas.

Dans mon teste avec le code ci dessous, si je mets :

If ac(3,1) =col(0) -- le message d'erreur sera : Adresse mac non truové

Ensuite je met elseif(3,i) -- le message d'erreur sera : n° de série non trouvé alors qu'il l'avait trouvé au début.

Dim Tbl(), ac, k, Col, i%, j%, n%

ac = Worksheets("Feuil1").Range("A1").CurrentRegion

'Traitement Adresse MAC

Col = Array("N°serie", "Adresse MAC"): k = Array(0, 0)

For i = 1 To UBound(ac, 2)

'remplacer 1 ci-dessous par ligne d'en-tête si pas 1 - Ne marche pas. Si je met la première valeur (AC3, I), il ne trouve pas l'adresse mac, si je met les 2 valeurs AC a 3, il ne trouve pas le numéro de série

If ac(1, i) = Col(0) Then

k(0) = i

ElseIf ac(1, i) = Col(1) Then

k(1) = i

End If

Next i

For i = 0 To 1

If k(i) = 0 Then

MsgBox Col(i) & " non détecté !" & Chr(10) & "Vérifier.", vbCritical, _

"Intitulé manquant"

Exit Sub

End If

Re,

As-tu regardé ma proposition ?

Cdlt.

Pour tester power query, il faudra que j'attende demain, j'ai un office 2007 chez moi.

Je testerais demain au bureau.

Concernant le xml, tu veux dire quoi ? Je ne peux pas modifier le schéma.

Re,

A partir d'Excel (Power Query), tu peux traiter un fichier xml directement et appliquer ce que j'ai réalisé dans l'exemple envoyé précédemment.

Cdlt.

Intéressant.

Je test ça demain

Je ne comprend toujours pas.

Voilà où j'en suis :

Tu veux rechercher des entêtes qui n'existent en ligne 3 et tu t'étonnes de pas les trouver...

Et mon PS ne t'inspire rien ? Tu n'as pas répondu

Hello Eriiic,

Je joins le fichier en forme définitive.

Concrètement, si je mets les intitulés en jaunes dans le fichier en ligne 1, ca marche. Mais je les veux en ligne 3 car celle ci peuvent bouger et du coup l'intitulé de ma ligne 1 deviendrais faux.

Quand je lui donne les bons intitulés, ainsi que la ligne 3 de départ, ben il trouve pas.

Je copie les meme intitulé en ligne 1, tout marche

Bonne journée

Ps : je vais regarder de suite les propositions

7caracpl-2.xlsm (40.02 Ko)

Toujours pas vu mon PS ?

Tu parles de cette ligne de code :

Set c = Rows(3).Find("/body/r/c4/mac_address", , xlValues, xlPart) ?

Rechercher des sujets similaires à "impossible changer ligne depart"