pb boucle VBA et écriture module

euro.speed

XLDnaute Nouveau
bonsoir à tous,

j'ai un module qui me créer le texte d'un module dans une colonne d'une feuille xls.

Ensuite je fais un copier/coller de mon code vers un module access et là arrive le problème.

J'ai par exemple une cellule qui comporte 1373 caractères.
Je constate que le module access ne supporte que 1013 caractères puis il me revoit à la ligne brutalement sans mettre de _ du coup ça marche pas !


Voici mon code, qui concatène une colonne dans une cellule :


Dim X As Integer
Dim temp As String
temp = ""
tempz = ""
For z = Range("AD6500").End(xlUp).Row To 3 Step -1
temp = Range("AD" & z)
tempz = temp + tempz
Next z

QQ'un sait-il comment faire pour que par exemple, dès que len(tempz)> 1000, il finisse sa boucle avec tempz comme ça je rajoute un "_"
puis une deuxième voir 3 ou 4ième boucle prenne le relai.
genre :
tempz _
tempz2 _
tempz3 _
tempz4


Merci d'avance ;-)
 

MichelXld

XLDnaute Barbatruc
Re : pb boucle VBA et écriture module

bonsoir

Je n'ai pas testé mais tu pourrais essayer une syntaxe de ce type

Code:
Dim z As Integer
Dim Temp As String, Tempz As String
Dim Cible As String
 
Temp = ""
Tempz = ""
 
For z = Range("AD6500").End(xlUp).Row To 3 Step -1
    Temp = Range("AD" & z)
    Cible = Temp & Cible
    
    If Len(Cible) > 1000 Then
        Tempz = Tempz & Cible & " & _" & vbCrLf
        Cible = ""
    End If
Next z
 
Debug.Print Tempz


Il te restera à adapter l'agencement de tes données (je n'ai pas compris pourquoi tu boucles de la derniere ligne vers la premiere...


Bonne soirée
MichelXld
 

euro.speed

XLDnaute Nouveau
Re : pb boucle VBA et écriture module

Bonjour MichelXld, bonjour à tous,

merci pour ta répondre, c'est nickel. Ta solution est très astucieuse :)

J'ai fais quelques modifs pour obtenir le résultat attendu.

Pour répondre à ta remarque :
"Il te restera à adapter l'agencement de tes données (je n'ai pas compris pourquoi tu boucles de la derniere ligne vers la premiere..."

Tu as raison, je boucle dans l'ordre maintenant :cool:

Pour info voici mon code :

Dim X As Integer
Dim Temp As String
Temp = ""
Tempz = ""
Cible = ""
For z = 3 To Range("AD6500").End(xlUp).Row Step 1
Temp = Range("AD" & z)
Cible = Cible & Temp
If Len(Cible) > 500 Then
Tempz = Tempz & Cible & " _" & vbCr
Cible = ""
End If

Next z
Tempz = Tempz & Cible
'ici on retire le dernier caractère ";"
Tempz = Left(Tempz, Len(Tempz) - 1)
'ici on retire le premier caractère " "
Tempz = Right(Tempz, Len(Tempz) - 1)


Merci pour ton aide, mais il me reste une question :confused:
Lorsque je fais un copier/coller de ma colonne excel vers VBA access, il y a des " qui apparaissent autour de la cellule contenant Tempz.
Quel est ce phénomène !

Bonne journée.
 

euro.speed

XLDnaute Nouveau
Re : pb boucle VBA et écriture module

Bonsoir MichelXld,

En fait ce qu'il se passe c'est que, lors d'un copié/collé, excel traite différement les cellules lorsqu'elle contiennent des retour-chariots.

Au moment du collage les données provenant d'une cellule contenant un retour-chariot sont systématiquement mises entre guillemets !

l'astuce est de sélectionner les données avec le curseur puis de faire un ctrlc/ctrlv pour éviter le pb. Mais c'est de la "bidoule".
Comment faire pour l'introduire dans le code ?
Pour l'instant je cherche du côté du collage spéciale txt,... :eek:

Merci pour ton aide et bonne soirée !

Voila un exemple en PJ
 

Pièces jointes

  • PbChariots.xls
    18 KB · Affichages: 64
  • PbChariots.xls
    18 KB · Affichages: 63
  • PbChariots.xls
    18 KB · Affichages: 62
Dernière édition:

Membres actuellement en ligne

Statistiques des forums

Discussions
312 493
Messages
2 088 956
Membres
103 989
dernier inscrit
jralonso