Macro VBA qui ne fonctionne pas sous mac

Ok en voyant votre image dans un post précédent je pense avoir compris

Essayez comme ceci --> =INDEX(A$22:F$350;NB.SI(A$22:A$350;">0");6)

Yes, vous êtes trop bon.

@+ Filou

Bonjour,

Je reviens vers vous, car depuis quelques jours, la macro importe toujours bien, mais il recherche plus le montant, donc cela insère a la suite alors qu'il y a la valeur dans la colonne montant.

@+ Filou

Bonjour

Si vous n'avez pas modifié le fichier, il n'y a pas de raison. Ou alors c'est que vous avez un souci dans le format des montants. Dans la feuille Mensualisation vous avez bien les montants en euro ? Il ne sont pas au format texte ?

Cordialement

Bonsoir,

Je reviens après plusieurs essais c'était bien les colonnes montants qui étaient pas dans le bon format.

Merci encore pour votre aide et votre gentillesse et votre écoute.
Merci au forum

@+ Filou

Bonsoir

Oui je m'en doutais.

Mais je me demande toujours pourquoi vous n'importez pas toutes ces données depuis un fichier csv. J'ai en effet l'impression que vous faites un copier - coller

Chez Ing vous n'avez pas cette possibilité ?

Evidemment si c'était le cas, il faudrait probablement revoir les codes...

Cordialement

Bonjour,

Je viens de voir sur ING vous avez raison je peux le telecharger au format excel en choisissant soit le mois ou la période.
Cela serait compliquer de modifier ?

@+ Filou

Bonjour

Il faudrait que je vois le fichier avec quelques données. En fonction de ce fichier on peut copier les données dans votre fichier. De là je pense que la macro Convertir pourrait ne plus servir. Mais à analyser bien sur

Cordialement

Voici le fichier tel quel.

@+ Filou

Bonjour

Avec ce fichier il suffirait de faire un copier des données puis collage spécial valeurs dans la feuille importation. Ensuite via un code changer les dates en colonne A pour n'y mettre que le jour (puisque vous choisissez le mois en A1). Mais on peut aussi conserver la date et adapter le code en fonction

En gros la macro conversion, pourrait être évitée.

Deux choses à savoir :
- est-ce que la désignation mentionnée est celle que vous voulez voir dans la feuille mensualisation
- vous ne pouvez pas avoir des données à cheval sur deux mois différents mais si vous le voulez cela pourrait aussi se faire. Du coup vous n'auriez probablement plus besoin de choisir le mois en A1

Votre avis ?

Bonsoir,

Pour la désignation cela n'a pas d'importance, vu que je met l'enveloppe + le detail.
Après si il y a moyen d'avoir 2 mois a cheval cela serai mieux (je pense au fin de mois la jonction).

@+ Filou

Bonjour

Au vu du fichier que vous avez donné, voici ce que vous pouvez faire

1. Etape 1

- Allez dans l'éditeur VBA --> Module 1
- En dessous de la macro Conversion, mettez le code ci-dessous

Sub Formatter()
Dim dlg As Integer
Application.ScreenUpdating = False

With Worksheets("Importation")
    dlg = .Range("A" & .Rows.Count).End(xlUp).Row
    .Range("A4:A" & dlg).NumberFormat = "m/d/yyyy"
    .Range("C4:C" & dlg).Delete
    .Range("C4:C" & dlg).NumberFormat = "#,##0.00 $"
End With

With Worksheets("Importation").Sort
    .SortFields.Clear
    .SortFields.Add Key:=Worksheets("Importation").Range("A4:A" & dlg), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    .SetRange Worksheets("Importation").Range("A3:C" & dlg)
    .Header = xlYes
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
End With
Application.ScreenUpdating = True
End Sub

2. Etape 2

- Allez dans la feuille Importation
- Remplacez le code Importationdansmensualisation par celui ci-dessousSub ImportationDansMensualisation()Dim DateTransaction As Date

Sub ImportationDansMensualisation()
Dim DateTransaction As Date
Dim Montant As Single
Dim MoisTransaction As Byte
Dim LigneVide As Long
Dim ObjetTransaction As String
Dim Dligne As Long
Dim i As Long

'-------Lignes desactivees car importation donnees depuis fichier XLS -------
'On verifie qu'un mois a ete choisi et on l'enregistre
'If Sheets("Importation").Range("A1").Value = "" Then
'    MsgBox ("Veuillez choisir un mois")
'    Exit Sub
'Else
'    MoisTransaction = Month(DateValue("01 " & Sheets("Importation").Range("A1").Value & " 2020"))
'End If

'On cherche la derniere ligne de l'importationn
Dligne = Sheets("Importation").Cells(Rows.Count, 1).End(xlUp).Row
'on boucle depuis la ligne jusque la derniere ligne

For i = 4 To Dligne
'----- ligne "Datetransaction = ...." desactivee car importation donnees depuis fichier XLS
    'on enregistre la date
    'DateTransaction = DateSerial(Year(Now()), MoisTransaction, Sheets("Importation").Cells(i, 1).Value)

    'on enregistre la date - Importation depuis fichier XLS
    DateTransaction = DateSerial(Year(Cells(i, 1)), Month(Cells(i, 1)), Day(Cells(i, 1)))
    MoisTransaction = Month(DateTransaction)

    'on enregistre le montant et on lance la recherche du montant dans Mensualisation
    Montant = Sheets("Importation").Cells(i, 3).Value
    ObjetTransaction = Sheets("Importation").Cells(i, 2).Value

    Call RechercheImportationDansMensualisation(MoisTransaction, DateTransaction, Montant, ObjetTransaction)
Next i

MsgBox "Importation faite"
End Sub

J'ai désactivé quelques lignes qui ne servent plus. Par contre je ne les ai pas supprimées pour le cas où vous voudriez revenir à l'ancienne manière de procéder.

3 . Etape 3

- Le bouton Convertir sur votre feuille doit être affecté à la macro Sub Formatter()
-
Vous pouvez aussi ajouter un autre bouton supplémentaire mais le mieux est peut-être de changer uniquement le nom du bouton pour éviter de vous trompez.

4. Utilisation
- ouvrez votre fichier XLS
- Copiez les données depuis A1 jusque la colonne D. Attention que vous devez toujours avoir 4 colonnes et que la colonne des montants est toujours en colonne D
- Collez les données en A4 dans la feuille Importation

Il vous reste à cliquer sur le bouton Formatter que vous avez créé à l'étape 3 puis sur le bouton Importation habituel

Rem : Le choix du mois en A1 n'est plus nécessaire

Bonjou,

cela me met une erreur de compilation : end With sans With
J'ai enlever dans sub Formatter l'avant dernier End With
Cela me recolle tout dans la feuille mensualisation même les élément deja existant.

Merci pour votre aide.

@+ Filou

Juste. désolé c'est une erreur dans le recopiage

Cela me recolle tout dans la feuille mensualisation même les élément deja existant.

C'est à dire. Je n'ai changé que le début du code

Edit : je viens de tester avec le code précédent. Cela fait exactement la même chose

Vous n'avez pas à être désolé, c'est super votre aide.
Si il y a déjà un montant inscrit cela ne met pas la date en face mais refait une ligne.

@+Filou

Bonjour

Dans le fichier fait par votre amie, il semble qu'il y avait un controle effectué sur une dépense qui aurait été entrée sur le mois précédent via la feuille saisie et que la banque vous débiterait le mois suivant ou deux mois après. Du coup, le code effaçait votre entrée. Juste non ?

D'où ma question de savoir s'il se peut lors d'une entrée faite par vos soins, la banque ne vous débiterait que deux mois après. A mon avis non

Votre avis ?

Bonsoir,

Non la banque me débit en allant.
Après il y a la macro qui transfert d'un mois sur l'autre les transferts qui n'ont pas été effectué en fin de mois.
Bonne soirée

@+ Filou

Bonjour

Non la banque me débit en allant.
Après il y a la macro qui transfert d'un mois sur l'autre les transferts qui n'ont pas été effectué en fin de mois.

heu...je n'ai rien compris. Pouvez vous donner un exemple

Bonjour,

Non les saisies que je fais sont débité quasiment dans la foulée.

@+ Filou

Cela ne répond pas à la question au sujet des "transferts" dont vous parlez

Quels sont les cas où vous utilisez la feuille Saisie. Pour une dépense payée en cash ou par carte de crédit ?

Si vous l'utilisez pour mentionner une dépense par carte de crédit, il se pourrait que votre relevé banque soit effectué sur le mois suivant. Que fait-on dans ce cas ?

L'idéal serait de n'utiliser la feuille Saisie que pour les paiements effectuées sans carte.

Rechercher des sujets similaires à "macro vba qui fonctionne pas mac"