Un peu de couleurs dans nos posts !

mromain

XLDnaute Barbatruc
Re : Un peu de couleurs dans nos posts !

Merci pour le retour ;)

Bonne journée
 

abtony

XLDnaute Impliqué
Re : Un peu de couleurs dans nos posts !

Bonjour a tous

Fonctionne partiellement sur office MAC 2011 BETA 6.

Bravo mromain

Code:
[COLOR=BLUE]Sub[/COLOR] Masquerlignesvide()
    [COLOR=BLUE]Dim[/COLOR] cellule [COLOR=BLUE]As[/COLOR] Range
      [COLOR=BLUE]Dim[/COLOR] Zone [COLOR=BLUE]As[/COLOR] Variant
   [COLOR=GREEN] 'geler l'écran
      Application.ScreenUpdating = False
      'Définir zone (ici colonne A jusqu'à 1000)
      Set Zone = Range("c30", Range("c1000").End(xlUp))
      'on commence la boucle sur les Cellules de Zone
      For Each cellule In Zone
            'si cellule différente de 0 malgré formule alors masquer
            If cellule.Value = "" Then cellule.EntireRow.Hidden = True
            'on continue la boucle
      Next cellule
      'rétablir écran
      Application.ScreenUpdating = True
End Sub[/COLOR]

A + Cordialement
 

mromain

XLDnaute Barbatruc
Re : Un peu de couleurs dans nos posts !

Bonjour à tous, bonjour abtony,

Merci pour le retour ;).
Par contre, ne possédant pas de Mac, il sera difficile pour moi d'arranger ça...

a+
 

abtony

XLDnaute Impliqué
Re : Un peu de couleurs dans nos posts !

Bonjour à tous, bonjour abtony,

Merci pour le retour ;).
Par contre, ne possédant pas de Mac, il sera difficile pour moi d'arranger ça...

a+

Bonjour mromain, bonjour le forum,

en sélectionnant des références supplémentaires dans VBA, il y a une amélioration.

j'essaye de comprendre tout ce que tu a fait pour le rendre fonctionnel sous Mac (office 2011 les autres versions je pense pas que ça fonctionne).
Comme ce n'est qu'une beta tout n'est pas encore actif au niveau références VBA.

Si tu le permet je te demanderais surement des infos pour cela.

Merci d'avance
 

mromain

XLDnaute Barbatruc
Re : Un peu de couleurs dans nos posts !

Bonjour à tous,

Un petit "up" pour vous signaler une nouvelle version de l'utilitaire. Les apports de cette version (v.2.0.2 du 23/08/10) sont :
- réécriture du code de "traitement du code" (ajout des balises)
- ajout des commandes depuis l'éditeur VBE (merci à Hasco ;))
- ajout de mots clef.


@ abtony
Si tu le permet je te demanderais surement des infos pour cela.
Pas de problèmes ;)
D'ailleurs, il me semblait que la fonction Split ("éclater" une chaine de caractère) ne fonctionnait pas sur Mac. Si c'est bien le cas, c'est fâcheux, car je m'en sert pour "éclater" le code à chaque fin de ligne (vbNewLine), afin d'effectuer le "traitement" ligne par ligne)

a+
 

abtony

XLDnaute Impliqué
Re : Un peu de couleurs dans nos posts !

Bonjour mromain, le forum,

Après avoir fait différents essai, voila ce que j'obtient avec 2011 et la version 2.02 de ton utilitaire.

1/ si je modifie une ligne de ton code j'ai le résultat ci-dessous.


Code:
[COLOR=BLUE]Sub[/COLOR] Afficherlignesvide()
    [COLOR=BLUE]Dim[/COLOR] cellule [COLOR=BLUE]As[/COLOR] Range
      [COLOR=BLUE]Dim[/COLOR] Zone [COLOR=BLUE]As[/COLOR] Variant
    'geler l'écran
      Application.ScreenUpdating = False
      'Définir zone (ici colonne A jusqu'à 1000)
      [COLOR=BLUE]Set[/COLOR] Zone = Range("c30", Range("c1000").End(xlUp))
      'on commence la boucle sur les Cellules de Zone
      [COLOR=BLUE]For Each[/COLOR] cellule [COLOR=BLUE]In[/COLOR] Zone
            'si cellule différente de 0 malgré formule alors masquer
            [COLOR=BLUE]If[/COLOR] cellule.Value = "" [COLOR=BLUE]Then[/COLOR] cellule.EntireRow.Hidden = False
            'on continue la boucle
      [COLOR=BLUE]Next[/COLOR] cellule
      'rétablir écran
      Application.ScreenUpdating = True
End [COLOR=BLUE]Sub[/COLOR]

2/ si je ne modifie rien voila ce que ca donne


Code:
[COLOR=BLUE]Sub[/COLOR] Afficherlignesvide()
    [COLOR=BLUE]Dim[/COLOR] cellule [COLOR=BLUE]As[/COLOR] Range
      [COLOR=BLUE]Dim[/COLOR] Zone [COLOR=BLUE]As[/COLOR] Variant
    [COLOR=GREEN]'geler l'écran
      Application.ScreenUpdating = False
      'Définir zone (ici colonne A jusqu'à 1000)
      Set Zone = Range("c30", Range("c1000").End(xlUp))
      'on commence la boucle sur les Cellules de Zone
      For Each cellule In Zone
            'si cellule différente de 0 malgré formule alors masquer
            If cellule.Value = "" Then cellule.EntireRow.Hidden = False
            'on continue la boucle
      Next cellule
      'rétablir écran
      Application.ScreenUpdating = True
End Sub[/COLOR]


La ligne que je modifie, je supprime simplement l'espace après le guillemet, et ca ignore les commentaires.

Private Const particularite1 As String = "Len /'/""/String(/GoTo 0/)/(/,/: "
Private Const particularite2 As String = "Len__ /' /""/String__(/GoTo__0/ ) / ( / , /: "

Aurait tu une explication a ça ?

Merci d'avance
 

mromain

XLDnaute Barbatruc
Re : Un peu de couleurs dans nos posts !

Bonjour abtony,

Apparemment, il ne reconnait pas la fin des lignes. Le traitement doit s'effectuer sur tout le code d'un coup, et non ligne par ligne.

Est-ce que la fonction Split marche sur ta version d'Excel ? Peux-tu tester ce code et dire si le fonctionnement est normal stp ?
Code:
[COLOR=BLUE]Sub[/COLOR] Test()
[COLOR=BLUE]Dim[/COLOR] laChaine [COLOR=BLUE]As String[/COLOR], tabStr() [COLOR=BLUE]As String[/COLOR], i [COLOR=BLUE]As Long[/COLOR]

    laChaine = "el1;el2;el3;el4;el5"
    tabStr = Split(laChaine, ";")
    [COLOR=BLUE]For[/COLOR] i = [COLOR=BLUE]LBound[/COLOR](tabStr) [COLOR=BLUE]To UBound[/COLOR](tabStr)
        MsgBox tabStr(i)
    [COLOR=BLUE]Next[/COLOR] i
[COLOR=BLUE]End Sub[/COLOR]

Merci d'avance et à bientôt ;)
 

abtony

XLDnaute Impliqué
Re : Un peu de couleurs dans nos posts !

Bonjour abtony,

Apparemment, il ne reconnait pas la fin des lignes. Le traitement doit s'effectuer sur tout le code d'un coup, et non ligne par ligne.

Est-ce que la fonction Split marche sur ta version d'Excel ? Peux-tu tester ce code et dire si le fonctionnement est normal stp ?
Code:
[COLOR=BLUE]Sub[/COLOR] Test()
[COLOR=BLUE]Dim[/COLOR] laChaine [COLOR=BLUE]As String[/COLOR], tabStr() [COLOR=BLUE]As String[/COLOR], i [COLOR=BLUE]As Long[/COLOR]

    laChaine = "el1;el2;el3;el4;el5"
    tabStr = Split(laChaine, ";")
    [COLOR=BLUE]For[/COLOR] i = [COLOR=BLUE]LBound[/COLOR](tabStr) [COLOR=BLUE]To UBound[/COLOR](tabStr)
        MsgBox tabStr(i)
    [COLOR=BLUE]Next[/COLOR] i
[COLOR=BLUE]End Sub[/COLOR]

Merci d'avance et à bientôt ;)

Bonjour mromain, le forum,

ce code fonctionne parfaitement, une boite de dialogue avec e11 a e15

a chaque validation on augmente d'une valeur

Cordialement

Abtony
 

mromain

XLDnaute Barbatruc
Re : Un peu de couleurs dans nos posts !

Re bonjour.

Merci pour ton rapide retour ;)

Peux tu essayer ce code :
Code:
[COLOR=BLUE]Sub[/COLOR] Test()
[COLOR=BLUE]Dim[/COLOR] titi [COLOR=BLUE]As[/COLOR] DataObject, texte [COLOR=BLUE]As String[/COLOR], tabLignes() [COLOR=BLUE]As String[/COLOR], i [COLOR=BLUE]As Long[/COLOR]

    
    [COLOR=GREEN]'récupérer dans la variable "texte" le texte copié dans le presse papier[/COLOR]
    [COLOR=BLUE]Set[/COLOR] titi = [COLOR=BLUE]New[/COLOR] DataObject
    titi.GetFromClipboard
    texte = titi.GetText
    
    [COLOR=GREEN]'afficher l'ensemble du texte[/COLOR]
    MsgBox texte
    
    [COLOR=GREEN]'éclater le texte à chaque fin de ligne[/COLOR]
    tabLignes = Split(texte, vbNewLine)
    
    [COLOR=GREEN]'boucler sur chaque ligne et les afficher une par une[/COLOR]
    [COLOR=BLUE]For[/COLOR] i = [COLOR=BLUE]LBound[/COLOR](tabLignes) [COLOR=BLUE]To UBound[/COLOR](tabLignes)
        MsgBox "Ligne " & i + 1 & " : " & tabLignes(i)
    [COLOR=BLUE]Next[/COLOR] i
[COLOR=BLUE]End Sub[/COLOR]

Il faut copier un texte (Ctrl + C) de plusieurs lignes. Ensuite, lance la macro.
Le texte copié sera affiché en entier puis, normalement, ligne par ligne (c'est là que j'ai un doute...).

Merci, a+
 

abtony

XLDnaute Impliqué
Re : Un peu de couleurs dans nos posts !

Re mromain,

ton code une fois de plus fonctionne a merveille, et tout comme tu le décrit.

il affiche en premier tout le texte, et ensuite ligne par ligne.

J'ai copié le code sur une feuille excel et dans le module

ligne 3,4,9,12,15 vides et il les donne bien comme vide.

On va y arriver (enfin tu va y arriver) ça ne doit pas être grand chose ! mais quoi ?

Merci
 

mromain

XLDnaute Barbatruc
Re : Un peu de couleurs dans nos posts !

Re,

Ça m'embête un peu que le code précédent fonctionne :eek:.
Du coup, je ne vois pas trop... Pour l'instant.
Je vais retoucher le "code de traitement" (module XLD_Module_ConversionCode) afin de passer d'un traitement ligne par ligne à un traitement "direct" (la sélection / la procédure / le module "d'un trait").

Je persiste à penser que le problème vient de là (je me trompe peut-être :p), ou du moins qu'un truc se passe par là.

En effet, j'ai l'impression que chez toi, le traitement ne se fait pas ligne par ligne, mais qu'il considère le code comme un seul string ("une ligne contenant des retour à la ligne").
Vu que le traitement considère qu'à partir du moment (dans la ligne) où on est dans un commentaire, la fin de la ligne est forcément un commentaire, ça pourrait expliquer ce bugg.

Ce n'est qu'une supposition car je ne possède pas cette version affin de pouvoir débugger et vérifier le comportement de la macro.

Cependant, je n'assure rien car apparemment, la fonction Split() et la constante vbNewLine semblent ne pas poser problème sur ta version... et je pensais que ça venait de là...

Je te tiendrai au courant.

Merci encore pour tes tests / retours, et à+
 

mromain

XLDnaute Barbatruc
Re : Un peu de couleurs dans nos posts !

Bonjour à tous,
Bonjour abtony,


Afin d'avancer sur les problèmes de compatibilité avec Excel2011 pour Mac, pourrais-tu effectuer un petit test stp ?

> Coller le code suivant dans un fichier Excel contenant un UserForm (même vide) ;

Puis :
> Copier dans le presse-papier les cinq lignes de la macro test ;
> Lancer la macro Macro (elle va copier un nouveau texte dans le presse-papier) ;
> Coller le résultat sur ce fil.
Code:
[COLOR=BLUE]Sub[/COLOR] Macro() ;

Puis :
> Refaire la manip avec la macro [I]Macro2 [/I]et re-poster le résultat.[CODE][COLOR=BLUE]Sub[/COLOR] Macro()
[COLOR=BLUE]Dim[/COLOR] titi [COLOR=BLUE]As New[/COLOR] DataObject, test [COLOR=BLUE]As String[/COLOR]
    titi.GetFromClipboard
    test = titi.GetText
    titi.SetText (Code(test))
    titi.PutInClipboard
[COLOR=BLUE]End Sub[/COLOR]

[COLOR=BLUE]Sub[/COLOR] Macro2()
[COLOR=BLUE]Dim[/COLOR] titi [COLOR=BLUE]As New[/COLOR] DataObject, test [COLOR=BLUE]As String[/COLOR]
    titi.GetFromClipboard
    test = titi.GetText
    titi.SetText (Code2(test))
    titi.PutInClipboard
[COLOR=BLUE]End Sub[/COLOR]


[COLOR=BLUE]Private Function[/COLOR] Code(texte [COLOR=BLUE]As String[/COLOR]) [COLOR=BLUE]As String[/COLOR]
[COLOR=BLUE]Dim[/COLOR] iL [COLOR=BLUE]As Long[/COLOR]
    [COLOR=BLUE]For[/COLOR] iL = 1 [COLOR=BLUE]To[/COLOR] Len(texte)
        Code = Code & [COLOR=BLUE]CStr[/COLOR](Asc(Mid(texte, iL, 1))) & "-"
    [COLOR=BLUE]Next[/COLOR] iL
[COLOR=BLUE]End Function[/COLOR]


[COLOR=BLUE]Private Function[/COLOR] Code2(texte [COLOR=BLUE]As String[/COLOR]) [COLOR=BLUE]As String[/COLOR]
[COLOR=BLUE]Dim[/COLOR] iL [COLOR=BLUE]As Long[/COLOR], iM [COLOR=BLUE]As Long[/COLOR], tabM() [COLOR=BLUE]As String[/COLOR]
    tabM = Split(texte, " ")
    [COLOR=BLUE]For[/COLOR] iM = [COLOR=BLUE]LBound[/COLOR](tabM) [COLOR=BLUE]To UBound[/COLOR](tabM)
        Code2 = Code2 & "Mot " & Format(iM + 1, "00") & " : "
        [COLOR=BLUE]For[/COLOR] iL = 1 [COLOR=BLUE]To[/COLOR] Len(tabM(iM))
            Code2 = Code2 & [COLOR=BLUE]CStr[/COLOR](Asc(Mid(tabM(iM), iL, 1))) & "-"
        [COLOR=BLUE]Next[/COLOR] iL
        Code2 = Code2 & vbNewLine
    [COLOR=BLUE]Next[/COLOR] iM
[COLOR=BLUE]End Function[/COLOR]


[COLOR=BLUE]Sub[/COLOR] test()
[COLOR=BLUE]Dim[/COLOR] tata [COLOR=BLUE]As String[/COLOR]
    [COLOR=GREEN]'bla bla bla[/COLOR]
    tata = "tata"
[COLOR=BLUE]End Sub[/COLOR]
Je continue à penser que le problème vient de la "reconnaissance de fin de ligne". J'espère que ce petit test pourra le confirmer.

D'avance merci ;)

a+
 
Dernière édition:

abtony

XLDnaute Impliqué
Re : Un peu de couleurs dans nos posts !

Bonjour mromain, le forum,

J'ai lu ton message un peu tardivement, mais voici le résultat du test.

Macro1

Code:
83-117-98-32-116-101-115-116-40-41-13-68-105-109-32-116-97-116-97-32-65-115-32-83-116-114-105-110-103-13-32-32-32-32-39-98-108-97-32-98-108-97-32-98-108-97-13-32-32-32-32-116-97-116-97-32-61-32-34-116-97-116-97-34-13-69-110-100-32-83-117-98-0-0-


Macro2

Code:
Mot 01 : 83-117-98-
Mot 02 : 116-101-115-116-40-41-13-68-105-109-
Mot 03 : 116-97-116-97-
Mot 04 : 65-115-
Mot 05 : 83-116-114-105-110-103-13-
Mot 06 : 
Mot 07 : 
Mot 08 : 
Mot 09 : 39-98-108-97-
Mot 10 : 98-108-97-
Mot 11 : 98-108-97-13-
Mot 12 : 
Mot 13 : 
Mot 14 : 
Mot 15 : 116-97-116-97-
Mot 16 : 61-
Mot 17 : 34-116-97-116-97-34-13-69-110-100-
Mot 18 : 83-117-98-0-0-

Merci de ton intérêt

Cordialement
 

mromain

XLDnaute Barbatruc
Re : Un peu de couleurs dans nos posts !

Bonjour à tous,
Bonjour abtony,

Merci pour ton retour.
J'ai modifié du coup l'AddIn (v2.1). Peux-tu le tester sur ta version d'Excel s'il te plait ?

Merci ;)
 

Pièces jointes

  • AddIn - Editeur de post XLD_v.2.1.zip
    42.6 KB · Affichages: 79

abtony

XLDnaute Impliqué
Re : Un peu de couleurs dans nos posts !

Bonjour mromain, le forum,

Voici ce que j'obtiens avec la nouvelle version, sans commentaires.

Code:
[COLOR=BLUE]Private Sub[/COLOR] TextBoxRechLib_Change()
Listbox1.Clear
N = 0
Recherche = TextBoxRechLib.Value
Ligne = Range("b" & "65536").End(xlUp).Row
Set Plage = Range("b" & "1:" & "b" & Ligne)
With Plage
Set C = .Find(Recherche)
If [COLOR=BLUE]Not[/COLOR] C [COLOR=BLUE]Is Nothing[/COLOR] Then
Adresse = C.Address
Do
    [COLOR=BLUE]If[/COLOR] VBA.UCase(Recherche) = VBA.UCase(Left(C, VBA.Len(Recherche))) Then
          Listbox1.AddItem C.Offset(0, 0), N
        Listbox1.List(N, 1) = C
        Listbox1.List(N, 0) = C.Offset(0, -1)
        Listbox1.List(N, 2) = C.Offset(0, 1)
        Listbox1.List(N, 3) = C.Offset(0, 2)
        Listbox1.List(N, 4) = C.Offset(0, 3)
         Listbox1.List(N, 5) = C.Offset(0, 4)
         Listbox1.List(N, 6) = C.Offset(0, 5)
         Listbox1.List(N, 7) = C.Offset(0, 6)
         N = N + 1
    [COLOR=BLUE]End[/COLOR] If
    [COLOR=BLUE]Set[/COLOR] C = .FindNext(C)
    [COLOR=BLUE]Loop While Not[/COLOR] C [COLOR=BLUE]Is Nothing And[/COLOR] C.Address <> Adresse
    [COLOR=BLUE]End[/COLOR] If
End With
For x = 1 [COLOR=BLUE]To[/COLOR] 8
 Controls("Textbox" & x) = ""
Next x
If TextBoxRechLib = "" [COLOR=BLUE]Then[/COLOR] Listbox1.List = t
End [COLOR=BLUE]Sub[/COLOR]

Et avec commentaires.

Code:
[COLOR=BLUE]Sub[/COLOR] Masquerlignesvide()
    [COLOR=BLUE]Dim[/COLOR] cellule [COLOR=BLUE]As[/COLOR] Range
      [COLOR=BLUE]Dim[/COLOR] Zone [COLOR=BLUE]As[/COLOR] Variant
    [COLOR=GREEN]'geler l'écran
      Application.ScreenUpdating = False
      'Définir zone (ici colonne A jusqu'à 1000)
      Set Zone = Range("c30", Range("c1000").End(xlUp))
      'on commence la boucle sur les Cellules de Zone
      For Each cellule In Zone
            'si cellule différente de 0 malgré formule alors masquer
            If cellule.Value = "" Then cellule.EntireRow.Hidden = True
            'on continue la boucle
      Next cellule
      'rétablir écran
      Application.ScreenUpdating = True
End Sub[/COLOR]

je pense que tu n'est pas loin du bût !

Cordialement
 

Discussions similaires

Statistiques des forums

Discussions
315 098
Messages
2 116 189
Membres
112 679
dernier inscrit
Yupanki