[Déplacé VB6 --> VBA] /!\ Chaîne de caractères: Aidez moi SVP !
HiiiCoach
Messages postés27Date d'inscriptionvendredi 30 avril 2010StatutMembreDernière intervention 1 juin 2011
-
17 mai 2010 à 12:02
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 2015
-
17 mai 2010 à 16:07
Bonjour,
J'ai récemment codé un programme en VBA pour permettre une extraction rapide de données de gros fichiers excel.
J'aimerai aujourd'hui coder une fonction supplémentaire. En effet, je voudrai que l'utilisateur puisse choisir de n'extraire que les données correspondant à la chaine 'chaine' (entrée par ce même utilisateur).
Par exemple, admettons que la feuille excel se présente comme suit:
A B C D E F
1 (1) (2) (1) (1) (2) (1)
2 C12 to cc ba jo ko
Si l'utilisateur entre '(1)' par exemple, alors les cases A2,C2,D2, et F2 seront extraites dans un fichier .csv. En revanche, les cases B2 et E2 seront volontairement omises dans l'extraction. Le fichier .csv aura la forme:
C12|cc|ba|ko (Le programme que j'ai créé gère déjà les séparateurs etc...)
Je vous sollicite seulement pour savoir comment ajouter un contrôle de chaîne de caractère selon le principe que j'ai énoncé.
Je vous colle une partie de mon code actuel ci-dessous:
'Il s'agit de la chaine qui sera entrée par l'utilisateur dans la TextBox10
chaine = TextBox10.Text
If TextBox1.Text = "" Then
MsgBox ("Veuillez choisir un nom au fichier")
End If
If TextBox9.Text = "" Or Len(TextBox9.Text) > 1 Then
MsgBox ("Veuillez indiquer un séparateur (1 caractère)")
End If
If TextBox7.Text = "" Then
MsgBox ("Veuillez indiquer un emplacement")
End If
If Len(TextBox8.Text) <> 7 And Len(TextBox8.Text) <> 0 Then
MsgBox ("Veuillez entrer un numéro d'occurence de 7 caractères ou laisser le champ vide")
End If
If TextBox3.Text "" Or TextBox4.Text "" Then
MsgBox ("Veuillez renseigner les numéros de colonnes")
End If
If TextBox5.Text "" Or TextBox6.Text "" Then
MsgBox ("Veuillez renseigner les numéros de lignes")
End If
If TextBox1.Text <> "" And (TextBox9.Text <> "" Or Len(TextBox9.Text) > 1) And TextBox7.Text <> "" And TextBox3.Text <> "" And TextBox4.Text <> "" And TextBox5.Text <> "" And TextBox6.Text <> "" And (Len(TextBox8.Text) 7 Or Len(TextBox8.Text) 0) Then
ChDir chemin
F = FreeFile
Open chemin & "\PLF_" & TextBox1.Text & "_" & Format(Now, "yyyymmdd") & "_" & Format(Time, "hhmmss") & "_" & occurence & ".csv" For Append As #F
Print #F, ("DEBUT")
'Il s'agit de coder à cet endroit un principe qui prenne en compte les caractères de la variable "chaîne" afin d'extraire seulement les données dont l'intitulé correspond à cette variable
For j = xlColumnValue(TextBox3.Text) To xlColumnValue(TextBox4.Text)
For i = TextBox5.Text To TextBox6.Text
valeur = valeur & Cells(i, j) & (separateur)
Next i
Print #F, (valeur)
valeur = ""
i = 1
Next j
Print #F, ("FIN")
Close #F
MsgBox ("Fichier PLF_" & TextBox1.Text & "_" & Format(Now, "yyyymmdd") & "_" & Format(Time, "hhmmss") & "_" & occurence & ".csv généré avec succés dans le répértoire " & chemin)
End If
End Sub
Merci d'avance !
Cordialement.
Julien.
A voir également:
[Déplacé VB6 --> VBA] /!\ Chaîne de caractères: Aidez moi SVP !
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 17 mai 2010 à 16:07
Salut
Explications bien compliquées ...
Donc, tu as ces données :
A B C D E F
1 (1) (2) (1) (1) (2) (1)
2 C12 to cc ba jo ko
Et tu voudrais sélectionner le contenu des cellules de la ligne 2 en fonction d'un choix listé en ligne 1 :
Dim monChoix As String
Dim monResultat As String
Dim maCellule As Range
monChoix = "(1)"
monResultat = ""
' Tu passes en revue toutes les cellules de la ligne 1
For Each maCellule In Range("A1:F1")
If maCellule.Value = monChoix Then
monResultat = monResultat & _
maCellule.Offset(1, 0).Value & _
Separateur
End If
Next
MsgBox monResultat
Vala
Jack, MVP VB NB : Je ne répondrai pas aux messages privés
Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)