Signaler

Comment mettre formule SI avec Convertir dans le VBA [Résolu]

Posez votre question Ju@nita 133Messages postés mardi 11 juin 2013Date d'inscription 30 août 2017 Dernière intervention - Dernière réponse le 17 juil. 2017 à 18:12 par gbinforme
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

http://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.
Utile
+0
plus moins
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
Ju@nita 133Messages postés mardi 11 juin 2013Date d'inscription 30 août 2017 Dernière intervention - 14 juil. 2017 à 22:00
ok je vais tester la semaine prochaine. J'a terminé mon travail aujourd'hui.
merci
Répondre
Donnez votre avis
Utile
+0
plus moins
Bonjour jbinforme,

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

merci beaucoup
gbinforme 14142Messages postés lundi 18 octobre 2004Date d'inscription ContributeurStatut 25 septembre 2017 Dernière intervention - 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 ! ;-)
Répondre
Donnez votre avis

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !