Probleme VBA suite

Le
bruno
Voici quelque jours, j'ai déjà réclamé de l'aide sur ce forum et pierre
fauconnier ainsi que HS2O4, FFO etc
m'ont donné quelques pistes et je les en remercie, mais malgré les
corrections apporté en suivant leurs conseils et mes efforts, cette macro ne
fonctionne toujours pas, auriez vous quelques pistes à me suggérer.
Je précises que je suis totalement débutant en vba.
Merci d'avance

Sub Etiquette_Atelier()
'
Feuil1.Select
'
Dim cellule As Range
Dim selection As Range
Dim cellule1 As Range
Dim cellule2 As Range
Dim cellule3 As Range
Dim cellule4 As Range
Dim OA As String
Dim Programme As String
Dim Couleur As String
Dim Quantite As String
'
Set selection = Range("A1:A350")
For Each cellule In selection.Rows
statut_ligne = Mid(cellule, 75, 8)
If statut_ligne = "atelier " Then
OA = Mid(cellule.Value, 2, 7) & "/" & Mid(cellule.Value, 9, 3)
Programme = Mid(cellule.Value, 126, 6) & "/" & Mid(cellule.Value, 129, 4)
Couleur = Mid(cellule.Value, 211, 6) & Mid(cellule.Value, 229, 10)
Quantite = Mid(cellule.Value, 116, 2)
'
Set cellule1 = Feuil9.Range("A4").End(xlDown).Offset(1, 0)
cellule1.Value = OA
Set cellule2 = Feuil9.Range("A4").End(xlDown).Offset(1, 1)
cellule2.Value = Programme
Set cellule3 = Feuil9.Range("A4").End(xlDown).Offset(1, 2)
cellule3.Value = Couleur
Set cellule4 = Feuil9.Range("A4").End(xlDown).Offset(1, 3)
cellule4.Value = Quantite
End If
Next cellule
End Sub
Questions / Réponses high-tech
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
MichDenis
Le #4546401
Les auteurs vont sûrement se présenter ....

Mais rapidement je te suggère 3 choses :

A ) il y a assez de nom possible pour désigner une variable
de type Range sans utiliser un mot réservé du langage
VBA à cet effet. Je fais référence à
Set selection = Range("A1:A350")

B) Dans cette ligne de code :
If statut_ligne = "atelier " Then
Est-ce que l'espace après "atelier" est voulu ?

C ) quand tu compares 2 chaines de caractère, il
est prudent de t'assurer que la casse des caractères
n'influera pas sur le résultat à moins que cela soit désiré.
au lieu d'écrire : If statut_ligne = "atelier " Then
utilise plutôt : If Lcase(statut_ligne) = "atelier" Then



"bruno"
Voici quelque jours, j'ai déjà réclamé de l'aide sur ce forum et pierre
fauconnier ainsi que HS2O4, FFO etc...
m'ont donné quelques pistes et je les en remercie, mais malgré les
corrections apporté en suivant leurs conseils et mes efforts, cette macro ne
fonctionne toujours pas, auriez vous quelques pistes à me suggérer.
Je précises que je suis totalement débutant en vba.
Merci d'avance

Sub Etiquette_Atelier()
'
Feuil1.Select
'
Dim cellule As Range
Dim selection As Range
Dim cellule1 As Range
Dim cellule2 As Range
Dim cellule3 As Range
Dim cellule4 As Range
Dim OA As String
Dim Programme As String
Dim Couleur As String
Dim Quantite As String
'
Set selection = Range("A1:A350")
For Each cellule In selection.Rows
statut_ligne = Mid(cellule, 75, 8)
If statut_ligne = "atelier " Then
OA = Mid(cellule.Value, 2, 7) & "/" & Mid(cellule.Value, 9, 3)
Programme = Mid(cellule.Value, 126, 6) & "/" & Mid(cellule.Value, 129, 4)
Couleur = Mid(cellule.Value, 211, 6) & Mid(cellule.Value, 229, 10)
Quantite = Mid(cellule.Value, 116, 2)
'
Set cellule1 = Feuil9.Range("A4").End(xlDown).Offset(1, 0)
cellule1.Value = OA
Set cellule2 = Feuil9.Range("A4").End(xlDown).Offset(1, 1)
cellule2.Value = Programme
Set cellule3 = Feuil9.Range("A4").End(xlDown).Offset(1, 2)
cellule3.Value = Couleur
Set cellule4 = Feuil9.Range("A4").End(xlDown).Offset(1, 3)
cellule4.Value = Quantite
End If
Next cellule
End Sub
h2so4
Le #4546251
bonsoir,

je ne suis pas sur d'avoir compris exactement ce que tu cherches à
faire,mais j'ai fait selon ma compréhension.

Sub Etiquette_Atelier()
Dim cellule As Range

Dim OA As String
Dim Programme As String
Dim Couleur As String
Dim Quantite As String

For Each cellule In _
Worksheets("Feuil1").Range("A1:A350").Rows
statut_ligne = Mid(cellule, 75, 7)
If LCase(statut_ligne) = "atelier" Then
OA = Mid(cellule, 2, 7) & "/" _
& Mid(cellule.Value, 9, 3)
Programme = Mid(cellule, 126, 6) & "/" _
& Mid(cellule, 129, 4)
Couleur = Mid(cellule, 211, 6) & _
Mid(cellule, 229, 10)
Quantite = Mid(cellule, 116, 2)
'
With Worksheets("Feuil9").Range("A:A").End(xlDown)
.Offset(1, 0) = OA
.Offset(1, 1) = Programme
.Offset(1, 2) = Couleur
.Offset(1, 3) = Quantite
End With
End If
Next cellule
End Sub

--

h2so4
play triogical at http://www.triogical.com

"bruno"
Voici quelque jours, j'ai déjà réclamé de l'aide sur ce forum et pierre
fauconnier ainsi que HS2O4, FFO etc...
m'ont donné quelques pistes et je les en remercie, mais malgré les
corrections apporté en suivant leurs conseils et mes efforts, cette macro
ne
fonctionne toujours pas, auriez vous quelques pistes à me suggérer.
Je précises que je suis totalement débutant en vba.
Merci d'avance

Sub Etiquette_Atelier()
'
Feuil1.Select
'
Dim cellule As Range
Dim selection As Range
Dim cellule1 As Range
Dim cellule2 As Range
Dim cellule3 As Range
Dim cellule4 As Range
Dim OA As String
Dim Programme As String
Dim Couleur As String
Dim Quantite As String
'
Set selection = Range("A1:A350")
For Each cellule In selection.Rows
statut_ligne = Mid(cellule, 75, 8)
If statut_ligne = "atelier " Then
OA = Mid(cellule.Value, 2, 7) & "/" & Mid(cellule.Value, 9, 3)
Programme = Mid(cellule.Value, 126, 6) & "/" & Mid(cellule.Value, 129,
4)
Couleur = Mid(cellule.Value, 211, 6) & Mid(cellule.Value, 229, 10)
Quantite = Mid(cellule.Value, 116, 2)
'
Set cellule1 = Feuil9.Range("A4").End(xlDown).Offset(1, 0)
cellule1.Value = OA
Set cellule2 = Feuil9.Range("A4").End(xlDown).Offset(1, 1)
cellule2.Value = Programme
Set cellule3 = Feuil9.Range("A4").End(xlDown).Offset(1, 2)
cellule3.Value = Couleur
Set cellule4 = Feuil9.Range("A4").End(xlDown).Offset(1, 3)
cellule4.Value = Quantite
End If
Next cellule
End Sub





bruno
Le #4546141
Pour répondre aux questions de MichDenis :

A) pas de probmème je ne savais pas que ce nom était réservé par vba,
j'avais trouvé ça dans un bouquin, donc je renomme ma variable

B)oui l'espace est voulu car la plage est de 8 caractères, et je teste si =
au mot atelier qui en comporte 7

C) je ne connaissais pas cette expression, et il s'avère que c'était
apparement un des point bloquant de ma macro, merci donc pour cette remarque
très pertinente. Je ne connaissais pas Lcase, je vais aller bouquiner pour
voir comment celà fonctionne.



"MichDenis"
Les auteurs vont sûrement se présenter ....

Mais rapidement je te suggère 3 choses :

A ) il y a assez de nom possible pour désigner une variable
de type Range sans utiliser un mot réservé du langage
VBA à cet effet. Je fais référence à
Set selection = Range("A1:A350")

B) Dans cette ligne de code :
If statut_ligne = "atelier " Then
Est-ce que l'espace après "atelier" est voulu ?

C ) quand tu compares 2 chaines de caractère, il
est prudent de t'assurer que la casse des caractères
n'influera pas sur le résultat à moins que cela soit désiré.
au lieu d'écrire : If statut_ligne = "atelier " Then
utilise plutôt : If Lcase(statut_ligne) = "atelier" Then



"bruno"
Voici quelque jours, j'ai déjà réclamé de l'aide sur ce forum et pierre
fauconnier ainsi que HS2O4, FFO etc...
m'ont donné quelques pistes et je les en remercie, mais malgré les
corrections apporté en suivant leurs conseils et mes efforts, cette macro
ne
fonctionne toujours pas, auriez vous quelques pistes à me suggérer.
Je précises que je suis totalement débutant en vba.
Merci d'avance

Sub Etiquette_Atelier()
'
Feuil1.Select
'
Dim cellule As Range
Dim selection As Range
Dim cellule1 As Range
Dim cellule2 As Range
Dim cellule3 As Range
Dim cellule4 As Range
Dim OA As String
Dim Programme As String
Dim Couleur As String
Dim Quantite As String
'
Set selection = Range("A1:A350")
For Each cellule In selection.Rows
statut_ligne = Mid(cellule, 75, 8)
If statut_ligne = "atelier " Then
OA = Mid(cellule.Value, 2, 7) & "/" & Mid(cellule.Value, 9, 3)
Programme = Mid(cellule.Value, 126, 6) & "/" & Mid(cellule.Value, 129,
4)
Couleur = Mid(cellule.Value, 211, 6) & Mid(cellule.Value, 229, 10)
Quantite = Mid(cellule.Value, 116, 2)
'
Set cellule1 = Feuil9.Range("A4").End(xlDown).Offset(1, 0)
cellule1.Value = OA
Set cellule2 = Feuil9.Range("A4").End(xlDown).Offset(1, 1)
cellule2.Value = Programme
Set cellule3 = Feuil9.Range("A4").End(xlDown).Offset(1, 2)
cellule3.Value = Couleur
Set cellule4 = Feuil9.Range("A4").End(xlDown).Offset(1, 3)
cellule4.Value = Quantite
End If
Next cellule
End Sub





JLuc
Le #4546131
*Bonjour bruno*,
Que contient ta cellule pour devoir prendre des textes si loin ??
Tu pourrais peut être splitter les données dans un tableau, ce serait
sans doute plus simple à gerer !

Exemple :
cellule = "Rapport;Atelier;Nom;Situation;bleu;100"
MaTable = Split(cellule, ";")

ou, si le séparateur est un espace :
cellule = "Rapport Atelier Nom Situation bleu 100"
MaTable = Split(cellule)

Et tu obtiens :
Matable(1) --> "Rapport"
...
MaTable(5) --> "bleu"


OA = Mid(cellule.Value, 2, 7) & "/" & Mid(cellule.Value, 9, 3)
Programme = Mid(cellule.Value, 126, 6) & "/" & Mid(cellule.Value, 129, 4)
Couleur = Mid(cellule.Value, 211, 6) & Mid(cellule.Value, 229, 10)
Quantite = Mid(cellule.Value, 116, 2)


--
____
( O | O )
--
_oooO_ JLuc _Oooo_

O-O

bruno
Le #4545311
Merci à tous pour votre aide, ma macro fonctionne, entre autre grace au
Lcase, mercià tous pour votre aide et vos conseils, grace à vous j'ai
progressé un peu plus.


"JLuc"
*Bonjour bruno*,
Que contient ta cellule pour devoir prendre des textes si loin ??
Tu pourrais peut être splitter les données dans un tableau, ce serait sans
doute plus simple à gerer !

Exemple :
cellule = "Rapport;Atelier;Nom;Situation;bleu;100"
MaTable = Split(cellule, ";")

ou, si le séparateur est un espace :
cellule = "Rapport Atelier Nom Situation bleu 100"
MaTable = Split(cellule)

Et tu obtiens :
Matable(1) --> "Rapport"
...
MaTable(5) --> "bleu"


OA = Mid(cellule.Value, 2, 7) & "/" & Mid(cellule.Value, 9, 3)
Programme = Mid(cellule.Value, 126, 6) & "/" & Mid(cellule.Value, 129,
4)
Couleur = Mid(cellule.Value, 211, 6) & Mid(cellule.Value, 229, 10)
Quantite = Mid(cellule.Value, 116, 2)


--
____
( O | O )
--
_oooO_ JLuc _Oooo_

O-O





Publicité
Poster une réponse
Anonyme