Condition sur valeur puis écriture dans un fichier texte

Bonjour le forum,Merci tout d'abord de prendre le temps de me lire

Je dispose d'un tableau à 3 colonnes je voudrais placer une condition sur la troisième colonne de façon à créer une échelle de couleur sur google earth.

Je m'explique pour les valeurs de 150 à 200 nous attribuerons la valeur :ffff00f0ff qui représente la couleur en hexa sur google earth

pour les valeurs de 250 a 300:ff2523aeff.

Je pense que vous avez compris l'idée.

Ensuite pour chaque couleur attribuer un texte s'écrira et dans ce texte la valeur apparaitra, mais ce texte devra s'écrire dans un bloc note.

Je m'explique a nouveau: En debut de bloc note nous aurons un texte fixe puis ensuite pour chaque couleur la valeur attribué

comme ceci:

<xml>

<blabla>

<style1>

<color>ffff00f0ff<color>

<style1>

grâce à cette macro je pourrais définir tous les styles afin de réaliser mon échelle de couleur.Je suis conscient que le programme initiale prendra du temps pour paramétrer les couleurs mais une fois cela fait je pourrais l'utiliser aisément.

Après j'aurais une autre question mais je pense que chaque chose en son temps est mieux.

Merci de m'avoir lu en espérant avoir été assez clair

Voila ce j'ai codé actuellement, ca ne marche bien évidemment pas :

Sub echellecouleur()
Dim c&

For c = 0 To 150
    If 0 < Cells(c + 1, "d") < 10 Then
        Cells(c + 1, "e") = "ffffoofoff"
        c = c + 1
    End If
Next c
End Sub

ca ne m'affiche que la valeur "ffffoofoff" une ligne sur deux et non en fonction de ma condition

Bonjour

Shak a écrit :

Je dispose d'un tableau à 3 colonnes

On pourrait le voir ?

Un fichier représentatif serait le bienvenu

Tu notes ce que tu as et ensuite tu marques d'une façon distincte ce que tu veux

A suivre

Merci de ta réponse rapide Banzai

voici le fichier (raccourci) en pièce jointe.

Bonjour

A tester

Merci banzai pour ton aide , je vais voir si je peux insérer la fonction rechercheV dans une maccro afin d'automatiser cette partie.C'est exactement ca et bcp plus simple que prévu.

Maintenant j'ai vu pour le texte hier , j'ai des conflits avec l'autre langage de programmation notamment l'utilisation des " et de ' j'espere que je vais pouvoir m'en affranchir

Après de nombreux essais afin de réaliser une macro je n'y arrive pas , je suis vraiment une quiche.

Voila ce que j'ai fait, c'est peut être totalement faux, dsl je suis tout nouveau dans le VBA:

Sub echellecouleur()

Dim c&
For c = 0 To 1500
Cells(c + 1, "g") = VLookup(Columns("c"), "$S$1:$T$7", 2, 1)
Next c
End Sub

j'ai le droit à une joli sub ou fonction non définie

Bonjour

Deux macros qui font la même chose

Avis personnel : Je préfère la 1ère

Sub EchelleCouleur()
  With Range("F2:F" & Range("A" & Rows.Count).End(xlUp).Row)
    .Formula = "=VLOOKUP(RC3,R1C19:R7C20,2,1)"
    .Value = .Value
  End With
End Sub
Sub EchelleCouleurBis()
Dim J As Long

  For J = 2 To Range("A" & Rows.Count).End(xlUp).Row
    Range("F" & J) = Application.VLookup(Range("C" & J), Range("S1:T7"), 2, 1)
  Next J
End Sub

Le résultat est en colonne F

Merci pour l'aide encore, je vais voir pour régler le problème du texte maintenant.

Je reviens vers vous car je suis actuellement confronté à un problème j'arrive à créer mon fichier texte, j'arrive à écrire dessus mais je comprend pourquoi sur une ligne cela bloque , mais je n'ai aucune idée de pour résoudre ce pb.

Comme vous le voyez ceci n'est que le début du programme, je définis au début les styles qui sont les couleurs en faite, et ensuite j'attribuerais les valeurs via excel enfin j'essaierai

Sub testécriture()
Dim J As Long
Open "D:\Shak\testécriture.txt" For Append As #1
h = ""
h = h + "<?xml version='1.0' encoding='UTF-8'?>" + vbCrLf
h = h + "<kml xmlns='http://www.opengis.net/kml/2.2' xmlns:gx='http://www.google.com/kml/ext/2.2' xmlns:kml='http://www.opengis.net/kml/2.2' xmlns:atom='http://www.w3.org/2005/Atom'>" + vbCrLf
h = h + "<Document>" + vbCrLf
h = h + "   <name>NAME</name>" + vbCrLf
h = h + "   <description>DESCRIPTION</description>" + vbCrLf
h = h + "   <LookAt>" + vbCrLf
h = h + "       <longitude>2.14818</longitude>" + vbCrLf
h = h + "       <latitude>48.7081</latitude>" + vbCrLf
h = h + "       <altitude>0</altitude>" + vbCrLf
h = h + "       <heading>-0.8021505109619711</heading>" + vbCrLf
h = h + "       <tilt>48.8748559088782</tilt>" + vbCrLf
h = h + "       <range>8119.180627034363</range>" + vbCrLf
h = h + "       <gx:altitudeMode>relativeToSeaFloor</gx:altitudeMode>" + vbCrLf
h = h + "   </LookAt>" + vbCrLf
h = h + "<Style id="bleu">" + vbCrLf
' problème de syntaxe y'a t'il moyen d'y remédier ,  ceci est sans dout du aux " mais j'en ai besoin dans mon code en xml ?
h = h + "       <LineStyle>" + vbCrLf
h = h + "           <color>190000ff</color>" + vbCrLf
h = h + "           <width>3</width>" + vbCrLf
h = h + "       </LineStyle>" + vbCrLf
h = h + "       <PolyStyle>" + vbCrLf
h = h + "            <color>ff0055ff</color>" + vbCrLf
h = h + "       </PolyStyle>" + vbCrLf
h = h + "    </Style>" + vbCrLf

Print#1, h
Close #1
End Sub

Bonjour

Sans test

Si dans des guillemets il y a des guillemets il faut doubler ces guillemets

h = h + "<Style id=""bleu"" >" + vbCrLf

J'ai trouvé je pense il suffit de remplacer les " par des ' qui sont géré de la meme manière en xml.

Prochain soucis les conditions sur les styles j'avance et je vous dis^^


je vais tester ta solution également Banzai, merci

EDIT : Les deux solutions fonctionnent.

Et l'assisté reviens au galops après avoir réfléchie pendant un bon moment pourquoi sa formule ne fonctionne pas

J'ai commencé à vouloir récupérer les données de mon tableau pour les implanter dans mon fichier texte

voici le code pour une condition:

For J = 2 To Range("A" & Rows.Count).End(xlUp).Row
    If Cells(F, J).Value = "ffffoooo" Then
        d = ""
        d = d + "<styleUrl>bleu foncé</styleUrl>" + vbCrLf
        d = d + "<LineString>" + vbCrLf
        d = d + "   <extrude>1</extrude>" + vbCrLf
        d = d + "  <tessellate>1</tessellate>" + vbCrLf
        d = d + "    <altitudeMode>relativeToGround</altitudeMode>" + vbCrLf
        d = d + "    <coordinates>" + vbCrLf
        d = d + Cells(F, J)
        d = d + "      </coordinates>" + vbCrLf
        d = d + "  </LineString>" + vbCrLf
    End If
Print#1, d
Next J

Cela ne fonctionne donc pas j'ai même essayé avec la fonction Range mais en vain. J'ai eppluché le forum et internet pour trouver mon erreur mais je ne vois pas ce qui est faux.

Bonjour

Dans des cas comme cela il faut indiquer où se situe l'erreur et noter le message d'erreur

Moi je vois

If Cells(F, J).Value = "ffffoooo" Then

à remplacer par

If Cells(J, "F").Value = "ffffoooo" Then

et

d = d + Cells(F, J)

à remplacer par

        d = d + Cells(J, "F")

A suivre si ce n'est pas ça

C'est effectivement à cette endroit là j'ai test ce que tu m'as dis . Alors j'ai inversé row et columns comme tu l'as corrigé . La solution etait tellement évidente que je ne l'ai pas vu , je pense que le fait d'etre débutant n'aide pas

Sinon voici le message qui s'affiche après avoir effectué ta correction :

Erreur d'éxecution '13'

Incompatibilité de type

Bonjour

Pas facile

Il faut le fichier avec la macro

Sur un fichier test je n'ai pas d'erreur, mais je n'ai que des brides de macro, je ne vois pas le programme dans l'ensemble

A te lire

Bon ben ca marche je n'ai rien changé

Par contre il n'y a pas de print de la valeur d

Bonjour

Ne pas confondre le o (la lettre) avec le 0 (zéro)

D'après ce que je vois "ffffoooo" est constitué des lettres f et o

Je suis vraiment bête ....

Mais j'ai l'impression que ca ne fonctionne tout de même pas

Bonsoir

Shak a écrit :

Mais j'ai l'impression que ca ne fonctionne tout de même pas

Pas très causant ce "ca ne fonctionne tout de même pas"

Envoies ton fichier pour essayer de trouver ce qui cloche

Rechercher des sujets similaires à "condition valeur puis ecriture fichier texte"