|
Publicité | ||||||||||||||||||||||
|
|
#1 |
|
Membre du Club
![]() Date d'inscription: juin 2009
Localisation: nice
Messages: 101
|
Bonjour tout le monde
j'ai réalisé une macro excel assez complexe ou l'adresse client est coupée a un moment donné grâce à la commande "split" et les différents morceaux sont séparés par des "~" .. j'utilise ensuite ces morceaux d'adresse pour remplir diffénrents documents ect.. et j'ai un pb à un moment donné, comme vous pouvez le voir sur la Pièce jointe ici, au niveau de "Adrese chantier" http://www.cijoint.fr/cjlink.php?fil...cijqovMpwz.doc j'aimerais mettre les "~" en blanc de facon a ne pas les voir......sauriez vous m'indiquer comment le faire?! pur info voici comment est rempli ce champs la: Code :
Private Sub Cmd_Valider_Click() Dim Adresse As String Adresse = Txt_Adresse01.Text & "~" & Txt_Adresse02.Text & "~" & Txt_Adresse03.Text & "~" & Txt_CP.Text & "~" & Txt_Ville.Text ActiveSheet.Cells(Ligne_Selectionnee, 3).Value = Adresse Call Cmd_Annuler_Click End Sub |
|
|
|
|
|
#2 |
|
Expert Confirmé
![]() Date d'inscription: juillet 2008
Localisation: Elsass
Âge: 24
Messages: 1 887
|
Bonjour,
Sans ouvrir le fichier Essaye quelque chose qui ressemble a ca Code :
With Cells(Ligne_Selectionnee, 3) i=len(Txt_Adresse01.Text)+1, .Characters(Start:=i Length:=1).Font.colorindex=2 i=i+len(Txt_Adresse02.Text)+1, .Characters(Start:=i, Length:=1).Font.colorindex=2 i=i+len(Txt_Adresse03.Text)+1, .Characters(Start:=i, Length:=1).Font.colorindex=2 end with tu ne peux pas simplement remplacer les ~ par des espace ? Code :
& " " &
Code :
& "~" &
|
|
|
|
|
|
#3 |
|
Membre du Club
![]() Date d'inscription: juin 2009
Localisation: nice
Messages: 101
|
Bjr Krovax
Tout d'abord merci d'etre toujours la pour nous éclairer de tes lumières! Je vais esayer ton code tel quel en l'insérant aprés la ligne de commande que j'ai écris dans mon précédent post.. Pour l'histoire des espaces au lieu des "~" je n'ai pas essayé....je peux découper qu'avec des espaces ?! si oui alors je vais faire ca...sinon je découpe avec les "~" et je met des espaces a la place des "~" ici: Code :
Adresse = Txt_Adresse01.Text & "~" & Txt_Adresse02.Text & "~" & Txt_Adresse03.Text & "~" & Txt_CP.Text & "~" & Txt_Ville.Text |
|
|
|
|
|
#4 |
|
Expert Confirmé
![]() Date d'inscription: juillet 2008
Localisation: Elsass
Âge: 24
Messages: 1 887
|
Tu peux découper avec ce que tu veux espace, retour a la ligne, virugle, le mot "Bob"....
ca donne pour découper le contenue de la variable ligne Code :
dim resultat() as string resultat=split(ligne," ") resultat=split(ligne,chr(13)) ' de mémoire le retour a la ligne c'est le 13 il fau voir une tablea ascii resultat=split(ligne,",") resultat=split(ligne,"Bob") Code :
Adresse =Txt_Adresse01.Text & " " & Txt_Adresse02.Text & " " & Txt_Adresse03.Text & " " & Txt_CP.Text & " " & Txt_Ville.Text |
|
|
|
|
|
#5 |
|
Nouveau membre du Club
![]() Date d'inscription: janvier 2009
Messages: 75
|
Bonjour,
Va faire un tour dans l'aide d'excel à "characters, objet". Il y a un exemle (presque le même que celui de Krovax). Je n'ai pas éssayé mais peut-être que quelque chose du genre:... Code :
dim s as characters for each s in tachaine s.font.colorindex=2 next
|
|
|
|
|
|
#6 |
|
Membre du Club
![]() Date d'inscription: juin 2009
Localisation: nice
Messages: 101
|
Bonjour nicht!
Pour Krovax j'ai essayé de faire tout betement ce que j'avais dit mais ca ne marche pas! j'ai bien les "~" qui ont disparus au profit des " " mais lorsque je découpe et que je veux coller les différents morceaux dans des endroits spécifiques (signets de mes fichiers modèles .dot) j'ai une erreur... voici le code qui permet de faire ca (ca permettra au moins a d'autres personnes de s'en inspirer si besoin!) Code :
Select Case Publipostage
Case vbYes
Dim apWord, docWord, curCell As Range, chemin
chemin = "Y:\TKAF\R04\A422\_Commun-Agence\Evelyne-carine\Dossier MOD\ISO + Doc type\"
'créer une application Word
Set apWord = CreateObject("word.application")
'curCell = première entrée (C11)
Set curCell = ThisWorkbook.Sheets("Feuil1").Range("C11")
'tant que quelque chose est écrit dans curCell
While curCell.Value <> vbNullString
'créer un nouveau document à partir du modèle "modele\invitation.dot"
Set docWord = apWord.Documents.Add(Template:=chemin & "Nom Client.dot")
'aller au signet "DateJour" dans le doc Word
apWord.Selection.Goto What:=-1, Name:="DateJour"
'y écrire la date d'aujourd'hui formatée
apWord.Selection.TypeText Format(Now, "dd/mm/yyyy")
'aller au signet "NomChantier" dans le doc Word
apWord.Selection.Goto What:=-1, Name:="NomChantier"
'y écrire la valeur de C11
apWord.Selection.TypeText ThisWorkbook.Sheets("Feuil1").Range("C11").Value
apWord.Selection.Goto What:=-1, Name:="NomClient"
apWord.Selection.TypeText ThisWorkbook.Sheets("Feuil1").Range("C15").Value
Dim Adresse() As String
Dim Temp_Adresse As String
Adresse = Split(ThisWorkbook.Sheets("Feuil1").Range("C17").Value, "~")
apWord.Selection.Goto What:=-1, Name:="AdresseClient"
If Adresse(0) <> "" Then
Temp_Adresse = Adresse(0)
If Adresse(1) <> "" Then <-- ERREUR ICI !
Temp_Adresse = Temp_Adresse & " - " & Adresse(1)
End If
If Adresse(2) <> "" Then
Temp_Adresse = Temp_Adresse & " - " & Adresse(2)
End If
End If
apWord.Selection.TypeText Temp_Adresse
apWord.Selection.Goto What:=-1, Name:="CPClient"
apWord.Selection.TypeText Adresse(3)
apWord.Selection.Goto What:=-1, Name:="Localiteclient"
apWord.Selection.TypeText Adresse(4)
'sauver le fichier Word (en lui donnant le nom souhaité
apWord.ChangeFileOpenDirectory (MonRep)
apWord.ActiveDocument.SaveAs Filename:="Plannification + Dde client ligne FT" & ".doc"
'fermet le document Word
docWord.Close
'décaler curCell d'une cellule vers le bas
Set curCell = curCell.Offset(1, 0)
Wend
'fermer l'application Word
apWord.Quit
'détruire les objets
Set apWord = Nothing: Set docWord = Nothing: Set curCell = Nothing
Windows.Application.Quit
je vais essayer de ce pas ce que propose nicht! rrra ca marche par car excel n'aime pas trop que je travaille avec les "~".. Code :
dim ~ as characters for each ~ in tachaine ~.font.colorindex=2 next comment faire?! Dernière modification par AlainTech ; 05/07/2009 à 22h58. Motif: Fusion de 2 messages |
|
|
|
|
|
#7 |
|
Expert Confirmé
![]() Date d'inscription: juillet 2008
Localisation: Elsass
Âge: 24
Messages: 1 887
|
Code :
dim ~ as characters for each ~ in tachaine ~.font.colorindex=2 next Ceci pourrais peut etre fonctionner mais je ne connais pas le type caracters Code :
dim ca as characters for each ca in tachaine 'la il faut remplacer ta chaine par TA chaine de caractère que tu veux modifier if ca= "~" then ca.font.colorindex=2 end if next Hors tu utilise Code :
Adresse = Split(ThisWorkbook.Sheets("Feuil1").Range("C17").Value, "~") Du coup il découpe en un seul morceau et adress(1) n'existe pas ton tableau n'a qu'une valeur en 0 ici aussi remplace le "~" par " " pour découper en fonction des espace. Quand le programme plante le premier reflexe avant tout autre c'est de le relancer en mode pas a pas en affichant les variable local (menue affichage variable local) tu aurais vu que tableau après le split n'avais que la dimension 0 |
|
|
|
|
|
#8 |
|
Nouveau membre du Club
![]() Date d'inscription: janvier 2009
Messages: 75
|
Re-
Bien sûr, tachaine c'est celle que tu veux modifier. Il fallait aussi définir s! ![]() Bon toujours est-il que j'ai fait ceci: Code :
Private Sub Worksheet_SelectionChange(ByVal Target As Range) For i = 1 To Len(Range("a1")) If Range("a1").Characters(i, 1).Text = "~" Then Range("a1").Characters(i, 1).Font.ColorIndex = 2 End If Next End Sub Si tu préfères, tu peux aussi faire comme ça: Code :
chaine = Feuil1.Range("a1").Value For i = 6 To Len(chaine) a = InStr(i, chaine, "~") Feuil1.Range("a1").Characters(a, 1).Font.ColorIndex = 5 Feuil1.Range("a1").Characters(1, 1).Font.ColorIndex = 1 Next ![]() Mais il y a une ligne en plus! Dernière modification par AlainTech ; 05/07/2009 à 22h58. Motif: Fusion de 2 messages |
|
|
|
|
|
#9 |
|
Membre du Club
![]() Date d'inscription: juin 2009
Localisation: nice
Messages: 101
|
Re messeiurs, désolé mais j'étais en réunion..
alors j'ai mis ca: Code :
Adresse = Split(ThisWorkbook.Sheets("Feuil1").Range("C17").Value, " ") Code :
Adresse =Txt_Adresse01.Text & " " & Txt_Adresse02.Text & " " & Txt_Adresse03.Text & " " & Txt_CP.Text & " " & Txt_Ville.Text je vais alors tenter desormais le script de nicht de 14h17......... alors je comprends pas un truc! le formulaire dans lequel je tape toutes les infos fonctionne, les "~" sont bien blancs (cf piece jointe) mais lorsque j'envoi le contenu de mes cellules au niveau des signets de mon .dot....et bien les "~" apparaissent en noir !! est du a mes .dot ou a autre chose ?! parce que le je comprends pas!! oups autant pour moi ce n'est pas un .dot mais bien un .doc en ecriture protégé que j'utilise...en mettant ce qu'il faut dans les seuls endroits disponibles du document (case grisée) le voila ce .dco en piece jointe! Dernière modification par AlainTech ; 05/07/2009 à 23h00. Motif: Fusion de 3 messages et balises [code] |
|
|
|
|
|
#10 | |
|
Membre du Club
![]() Date d'inscription: juin 2009
Localisation: nice
Messages: 101
|
a ben c'est bon en réfléchissant bien la desdus:
Citation:
Merci beuacoup a tous les 2 messieurs pour votre implication votre patience et votre générosité!! Je vous souhaite de passer une agréable fin de journée et un bon week end! A bientot sur developpez !! |
|
|
|
|
|
|
![]() |
||
Chgt couleur morceau de texte VB
|
||
| Outils de la discussion | |
|
|