Comment mettre formule SI avec Convertir dans le VBA

Résolu/Fermé
Ju@nita Messages postés 135 Date d'inscription mardi 11 juin 2013 Statut Membre Dernière intervention 19 mars 2018 - 14 juil. 2017 à 21:11
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 - 17 juil. 2017 à 18:12
Bonjour,

(j'ai excel 2010)
J'exporte dans excel des données bancaires. Parfois, tout se place bien, c.a.d. les dates dans la colonne A, la description dans la B, et les débits/crédits dans C et D.
Mais parfois, tout est dans la même colonne. Je dois alors aller dans Données/Convertir/Délimité/Suivant/Virgule/Suivant/Terminé et tout se replace bien.

Mais comme je dois monter une macro pour ce fichier excel, j'aimerais combler cette lacune en l'incorporant au début de ma macro. Dans le premier cas, il y a des données dans les 5 premières colonnes, mais dans le 2e cas, c'est juste la première. Donc, j'aimerais pouvoir dire ceci: SI il n'y a pas de donnée dans B1, alors exécute la conversion. Sinon, fais rien.

comment puis-je combiner ces 2 instructions dans une macro svp ?

Je ne sais pas écrire des procédures directement dans le VBA. Je FAIS la procédure en enregistrant une macro.
Donc, j'ai commencé avec la formule SI qui me donne ceci dans le VBA :
ActiveCell.FormulaR1C1 = "=IF(RC[1]="""",CONVERTIR,"""")"
End Sub

Évidemment, j'ai mis le mot CONVERTIR pour vous montrer où est-ce que je voudrais incorporer le reste, soit :

Columns("A:A").Select
Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
Semicolon:=False, Comma:=True, Space:=False, Other:=False, FieldInfo _
:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), _
Array(7, 1), Array(8, 1)), TrailingMinusNumbers:=True
Range("A1").Select
End Sub

https://www.cjoint.com/c/GGotiVwPgPV

Je vous joins un petit exemple. Dans la feuille 1, c'est quand je dois faire la conversion. Dans la feuille 2, c'est quand tout s'exporte bien. La macro doit s'exécuter dans la feuille 1 et le résultat sera identique à la feuille 2.

Merci pour votre aide.

Bonne journée.
A voir également:

2 réponses

gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
14 juil. 2017 à 21:50
Bonjour,

Pour mettre le SI, effectivement l'enregistreur ne sait pas faire.
Tu le met ainsi et je t'ai rajouté la largeur automatique des colonnes car sinon cela fait fouillis.
If [B1].Value = "" Then
    Columns("A:A").TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
        Semicolon:=False, Comma:=True, Space:=False, Other:=False, FieldInfo _
        :=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), _
        Array(7, 1), Array(8, 1)), TrailingMinusNumbers:=True
    ActiveSheet.UsedRange.Columns.AutoFit
End If
0
Ju@nita Messages postés 135 Date d'inscription mardi 11 juin 2013 Statut Membre Dernière intervention 19 mars 2018
14 juil. 2017 à 22:00
ok je vais tester la semaine prochaine. J'a terminé mon travail aujourd'hui.
merci
0
Ju@nita Messages postés 135 Date d'inscription mardi 11 juin 2013 Statut Membre Dernière intervention 19 mars 2018
17 juil. 2017 à 13:48
Bonjour jbinforme,

t'ai testé ta macro et ça fonctionne parfaitement, c'est exactement ce que je voulais.

merci beaucoup
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
17 juil. 2017 à 18:12
Bonjour Ju@nita,

Heureux pour toi que cela fonctionne : j'espère que tu as compris comment mettre un SI même s'il faut le faire en anglais ! ;-)
0