[Résolu] Concatener cellule d'un tableau + variables ...

Discussions à propos du traitement de textes Writer mais également sur l'éditeur HTML.
Les questions sur les macros doivent être postées dans la section dédiée en dessous.

Modérateur : Vilains modOOs

scaf
Fraîchement OOthentifié
Messages : 6
Inscription : 27 mai 2006 02:49

[Résolu] Concatener cellule d'un tableau + variables ...

Message par scaf »

Bonjour,

Je souhaite concatener dans une phrase une cellule provenant d'un tableau (contenu dans ma page) avec du texte et/ou des variables.

J'ai essayé de passer par un second tableau contenant des formules du genre :

=<Tableau1.D1> & "Texte"

=CONCATENER(<Tableau1.D1;"Texte)

Rien ne fonctionne : j'obtiens "0" ou "** formule erronée **"

J'ai vérifié tous les formats de cellules (texte ...).

Je précise que je ne souhaite pas passer par OpenOffice Calc.

Est-ce possible dans OO Writer ?

Merci pour votre aide.
Dernière modification par scaf le 27 mai 2006 15:22, modifié 1 fois.
OO 2.0.1 XP
Pierre-Yves Samyn
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 11276
Inscription : 02 mai 2006 08:42

Concaténer du texte et des nombres dans une formule

Message par Pierre-Yves Samyn »

Bonjour

Effectivement, les fonctions de conversion ne semblant pas fonctionner dans ce contexte, il est possible de procéder autrement : définir un repère de texte sur la cellule à récupérer (menu Insérer Repère de texte), puis, à l'endroit où on souhaite le résultat (qui n'est pas forcément un tableau) lancer "Insertion Champs Autres", onglet Références. Choisir la référence créée et le format "Texte de référence".
scaf
Fraîchement OOthentifié
Messages : 6
Inscription : 27 mai 2006 02:49

... et code barre 128 ...

Message par scaf »

Merci Pierre-Yves, cela fonctionne :)

Je souhaiterai aussi appliquer une fonction (macro openbarcodes provenant du site http://grandzebu.net) sur mon expression concatenée :

Voici la fonction :

Code : Tout sélectionner

Public Function Code128$(chaine$)
  'V 1.1.0
  'Paramètres : une chaine
  'Parameters : a string
  'Retour : * une chaine qui, affichée avec la police CODE128.TTF, donne le code barre
  '         * une chaine vide si paramètre fourni incorrect
  'Return : * a string which give the bar code when it is dispayed with CODE128.TTF font
  '         * an empty string if the supplied parameter is no good
  Dim i%, checksum&, mini%, dummy%, tableB As Boolean
  Code128$ = ""
  If Len(chaine$) > 0 Then
  'Vérifier si caractères valides
  'Check for valid characters
    For i% = 1 To Len(chaine$)
      Select Case Asc(Mid$(chaine$, i%, 1))
      Case 32 To 126, 198
      Case Else
        i% = 0
        Exit For
      End Select
    Next
    'Calculer la chaine de code en optimisant l'usage des tables B et C
    'Calculation of the code string with optimized use of tables B and C
    Code128$ = ""
    tableB = True
    If i% > 0 Then
      i% = 1 'i% devient l'index sur la chaine / i% become the string index
      Do While i% <= Len(chaine$)
        If tableB Then
          'Voir si intéressant de passer en table C / See if interesting to switch to table C
          'Oui pour 4 chiffres au début ou à la fin, sinon pour 6 chiffres / yes for 4 digits at start or end, else if 6 digits
          mini% = IIf(i% = 1 Or i% + 3 = Len(chaine$), 4, 6)
          GoSub testnum
          If mini% < 0 Then 'Choix table C / Choice of table C
            If i% = 1 Then 'Débuter sur table C / Starting with table C
              Code128$ = Chr$(205)
            Else 'Commuter sur table C / Switch to table C
              Code128$ = Code128$ & Chr$(199)
            End If
            tableB = False
          Else
            If i% = 1 Then Code128$ = Chr$(204) 'Débuter sur table B / Starting with table B
          End If
        End If
        If Not tableB Then
          'On est sur la table C, essayer de traiter 2 chiffres / We are on table C, try to process 2 digits
          mini% = 2
          GoSub testnum
          If mini% < 0 Then 'OK pour 2 chiffres, les traiter / OK for 2 digits, process it
            dummy% = Val(Mid$(chaine$, i%, 2))
            dummy% = IIf(dummy% < 95, dummy% + 32, dummy% + 100)
            Code128$ = Code128$ & Chr$(dummy%)
            i% = i% + 2
          Else 'On n'a pas 2 chiffres, repasser en table B / We haven't 2 digits, switch to table B
            Code128$ = Code128$ & Chr$(200)
            tableB = True
          End If
        End If
        If tableB Then
          'Traiter 1 caractère en table B / Process 1 digit with table B
          Code128$ = Code128$ & Mid$(chaine$, i%, 1)
          i% = i% + 1
        End If
      Loop
      'Calcul de la clé de contrôle / Calculation of the checksum
      For i% = 1 To Len(Code128$)
        dummy% = Asc(Mid$(Code128$, i%, 1))
        dummy% = IIf(dummy% < 127, dummy% - 32, dummy% - 100)
        If i% = 1 Then checksum& = dummy%
        checksum& = (checksum& + (i% - 1) * dummy%) Mod 103
      Next
      'Calcul du code ASCII de la clé / Calculation of the checksum ASCII code
      checksum& = IIf(checksum& < 95, checksum& + 32, checksum& + 100)
      'Ajout de la clé et du STOP / Add the checksum and the STOP
      Code128$ = Code128$ & Chr$(checksum&) & Chr$(206)
    End If
  End If
  Exit Function
testnum:
  'si les mini% caractères à partir de i% sont numériques, alors mini%=0
  'if the mini% characters from i% are numeric, then mini%=0
  mini% = mini% - 1
  If i% + mini% <= Len(chaine$) Then
    Do While mini% >= 0
      If Asc(Mid$(chaine$, i% + mini%, 1)) < 48 Or Asc(Mid$(chaine$, i% + mini%, 1)) > 57 Then Exit Do
      mini% = mini% - 1
    Loop
  End If
Return
End Function
Etant novice dans les macro, je ne sais pas comment l'appliquer sur mon expression à coder. :(
OO 2.0.1 XP
Avatar de l’utilisateur
cris59
Membre enthOOusiaste
Membre enthOOusiaste
Messages : 482
Inscription : 20 mars 2006 15:15
Localisation : Paris

Message par cris59 »

Les questions sur les macros doivent se trouver sur le forum "Macros et API"

Tu auras de meilleures chances d'obtenir une réponse ... et une question par sujet, c'est la règle ici ...

cris59
WinXP PRO SP2 avec OOo2.2 & Vista avec OOo2.3.1
& Debian avec OOo2.2
scaf
Fraîchement OOthentifié
Messages : 6
Inscription : 27 mai 2006 02:49

Message par scaf »

OK désolé.
OO 2.0.1 XP