concernant les zones de texte

  • Initiateur de la discussion nicolas
  • Date de début
N

nicolas

Guest
Bonjour le forum,

J'ai un ch'ti problème. J'ai un premier fichier qui représente une fiche à remplir. J'ai un deuxième fichier qui répertorie certains champs des fiches déjà remplies.
J'ai fait une macro qui permet le transfert des données de la fiche vers les fichier récapitulatif (=tableau).
Là où le bas blesse, c'est que le transfert de ce qu'il y a dans les zones de texte de ma fiche n'est pas complet. Je retrouve dans mon tableau (à la cellule adéquate) le début de la zone de texte de la fiche mais pas ce qu'il y a écrit à la fin. Or, quand je vais dans le tableau, il m'est toujours possible d'écrire à la suite de ca qui a été transféré. Ce n'est donc pas à priori du à un problème de place dans mon tableau.
Avez vous une idée???
merci d'avance
a plus
koko
 
@

@+Thierry

Guest
Bonsoir Nicolas, le Forum

Je n'ai pas vraiment compris tes explications pourtant je viens de les lires deux fois coup sur coup !

Il te manque une ligne en recopiant des données d'un Tableau "Source" vers un Tableau "Cible" çà OK !! Mais donc çà vient de ta macro, mais faudrait-il encore que tu poste le code car là on est aveugle même avec toute la meilleure du volonté du monde !

Donc poste même un petit fichier exemple et explicatif de ton problème avec la macro qui ne fait pas ce que tu souhaite... je suis sûr que tu auras plus de réponses...

Bon Courage !
Bonne Soireé là je file du Bureau
@+Thierry
 
N

nicolas

Guest
Bonjour thierry,
désolé de pas avoir été assez clair.
Disons que mon premier fichier excel répresente une fiche vierge à remplir. Il ya différents champs (correspondant à des zones de texte), et différents boutons à options.
Il y a également un gros bouton qui sert à enregistrer ce que l'on vient de remplir dans un nouveau fichier excel nommé en fonction de ce que l'on vient de remplir ("ActiveWorkbook SaveAs ...") tout en gardant la fiche vierge (le fichier excel original).
J'ai aussi un deuxième fichier excel qui est en fait un tableau récapitulatif des fiches déjà remplies (et qui reprend certains des champs des fiches).
Quand je clique sur le bouton précédemment cité, non seulement la fiche remplie est enregistrée sous son nom propre, mais ses champs doivent être sauvegardés dans le tableau récapitulatif (deuxième tableau). Il y a donc une macro qui insère une nouvelle ligne dans le taleau récapitulatif (ou complète une ancienne déjà existante) et "copie" dans les cellules adéquates de ma ligne ce qu'il y a dans les champs (zone de texte) de la fiche.
Et c'est là tout le problème, la macro marche, les champs sont effectivement copiés dans mon tableau mais pas en intégralité.
Imaginons qu'il y ait, je dis au hasard, 6 lignes dans ma zone de texte ( ou 500 caractères), et bien je ne retrouve que les 4 premières (ou les 300 1ers caractères) dans ùmon tableau récapitulatif.
Je ne pense franchement pas que le code soit à l'origine du pb. (Le code est de toi Thierry!!!) mais si jamais vous le voulez quand même, je tacherais de vous faire un exemple.
 
@

@+Thierry

Guest
Salut Nicolas, le Forum

Non ou oui, mais je lis que seulement maintenant ta réponse, tu sais je coche systématiquement "Recevoir la réponse par email à l'adresse ci-dessus" mais je ne peux consulter que quand je rentre chez moi. La journée (depuis le boulot) je ne survole le Forum deuis les 300 Chronos///

Mais malgré tout postes une exemple car le problème vient obligatoirement de la macro......

Bonne Nuit
@+Thierry
 
N

nicolas

Guest
Bonjour Thierry,
Comme prévu, voici l'exemple.
Remarque : Il existe certainement des petites erreurs par-ci par-là car j'ai repris le code de mes vrais fichiers sans les adapter.
Si le problème vient du code, cela doit certainement être du à la macro "TRansfert"
Merci d'avance
a plus
koko
 

Pièces jointes

  • essaireporting.ZIP
    18.7 KB · Affichages: 18
  • essaireporting.ZIP
    18.7 KB · Affichages: 22
  • essaireporting.ZIP
    18.7 KB · Affichages: 22
N

nicolas

Guest
Re: concernant les zones de texte(pour à+ Thierry)

Re_bonjour à tous,

je sais que c'est assez mal vu mais je fais ce post d'actualisation car le fil est mort depuis plusieurs jours!!
Ne m'en veuillez pas svp!

Pour mon problème concernant les zones de texte, peut-être que ce bout de code :

With WScible

.Range("A" & L) = WSsource.Shapes("nom de ma zone").DrawingObject.Caption

est la source du problème.
Je rappelle que j'essaye de transférer de manière automatique le contenu d'un zone de texte dans un autre classeur.
Problème : n'est transférer qu'une partie du contenu de la zone de texte (4 lignes sur 6 par exemple).
Voilà.

En vous remerciant (surtout Thierry pour le moment)
a plus
koko
 
@

@+Thierry

Guest
Bonsoir Nicolas, le Forum

Ce n'est pas que ton problème m'interresse ou pas, c'est que je ne suis pas trop souvent chez moi, et comme j'ai écrit plus haut, les anciens fils, je ne les vois que par mails interposés depuis chez moi...

Ceci dit, il y a bien un problème de conception dans le code que tu as repris d'une de mes démo... En effet dans cet démo la variable "Numero_fiche" devait exister dans la feuille Cible, hors dans ce que je vois dans ton fichier ce n'est pas le cas...

Tu initialises "Numero_fiche = nomFichier"
Hors "nomFichier' est initialisée dans une autre macro par concaténation de 3 cellules du fichier Source...

Seulement "Plage" est la range de la colonne "A" De la feuille Cible qui est vide de données...

Comme veux-tu alors que la boucle suivante fonctionne :
For Each Cell In Plage
If Cell = Numero_fiche Then
L = Cell.Row
End If
Next
Puisque toutes les Cells sont Vides...

Par conséquent la variable Long "L" n'est pas initialisée donc elle a la valeur zéro...

Il te faut gérer avec une Boolean "Existing" le cas où tu n'as pas déjà de Numéro_Fiche existant en initialisant "L" avec la dernière ligne disponible, voici la macro "Transfer" refaite :

Sub Transfert() '@+Thierry
Const ThePath As String = "H:\Nicolas\mon_anomalie\"
Dim WSsource As Worksheet, WScible As Worksheet
Dim L As Long
Dim Numero_fiche As String
Dim Plage As Range, Cell As Range
Dim Existing As Boolean

Set WSsource = ThisWorkbook.Worksheets("fiche")
Set WScible = Workbooks("tableau_mon_anomalie.xls").Worksheets("tableau")

nomFichier = "zaza" '<<< ici j'initialise ta variable pour mes tests (A DEGAGER)

Numero_fiche = nomFichier

Set Plage = WScible.Range("A1:A" & WScible.Range("A65536").End(xlUp).Row)

For Each Cell In Plage
If Cell = Numero_fiche Then
Existing = True
L = Cell.Row
End If
Next

If Existing = False Then
L = WScible.Range("A65536").End(xlUp).Row + 1
End If

With WScible
.Range("A" & L) = Numero_fiche
.Range("B" & L) = WSsource.Shapes("Description").DrawingObject.Caption
.Range("C" & L) = WSsource.Range("choix_caractéristique")
.Range("D" & L) = WSsource.Shapes("Commentaires").DrawingObject.Caption
.Range("E" & L) = WSsource.Range("Date_début")
.Range("F" & L) = WSsource.Range("Date_fin")
.Range("G" & L) = Numero_fiche & ".xls"
.Hyperlinks.Add Anchor:=.Range("G" & L), Address:=ThePath & nomFichier & ".xls"
End With

End Sub

J'ai aussi repris l'HyperLink... Pour ce qui est de saisir et reporter des données d'Objets Shapes, ce n'est pas vraiment très catholique non plus, mais boen j'ai laissé...

Voilà ce devrait mieux fonctionner !

Désolé pour les délais de réponse, mais je suis assez pris.
Bonne nuit ou Bonne Journée
@+Thierry
 
@

@+Thierry

Guest
Re Nicolas, le Forum

Pour ma dernière réflexion concernat l'usage des Objets Shape Texte je viens de tester ceci :

Sub Test1()
With ActiveSheet
.Range("A1") = .Shapes("zone de texte 1").DrawingObject.Caption
End With
End Sub

Et bien je ne reporte en "A1" que 255 caractères max.... Donc j'ai essayé de passer en transition par une Variable de type String :

Sub Test2()
Dim TempString As String
With ActiveSheet
TempString = .Shapes("zone de texte 1").DrawingObject.Caption
.Range("A1") = TempString
End With
MsgBox TempString
End Sub

C'est Idem... Donc il semblerait bien que tu aies une limitation de ce qui est lu dans un Objet Shape, qui est limité en lecture à 255 digits, contrairement à ce qui est affiché.

Bon courage et journée
@+Thierry
 

Discussions similaires

Réponses
5
Affichages
174

Statistiques des forums

Discussions
312 393
Messages
2 087 968
Membres
103 688
dernier inscrit
Amadou