Macro pour reporter un montant en focntion du signe.

Anto35200

XLDnaute Occasionnel
Bonjour,

J’ai mon fichier « extraction.xls » dans lequel il y a des données que je souhaite les exporter via une macro dans le fichier « résultats.xls ».
Mon souci, c’est que dans le fichier extraction, il y a des montants négatifs, par exemple
6535,47DB doit être reporté dans le fichier « résultat.xls » comme ceci – 6 535,47.

Comment je peux faire ?

En vous remerciant par avance de votre aide.
 

Pièces jointes

  • extraction.xls
    24 KB · Affichages: 42
  • résultat.xls
    25.5 KB · Affichages: 29
  • extraction.xls
    24 KB · Affichages: 49
  • résultat.xls
    25.5 KB · Affichages: 30
  • extraction.xls
    24 KB · Affichages: 45
  • résultat.xls
    25.5 KB · Affichages: 31

Iznogood1

XLDnaute Impliqué
Re : Macro pour reporter un montant en focntion du signe.

Dans ta macro
Dim v As Double
If Right(Range("I2"), 2) = "DB" Then v = -CDbl(Left(Range("I2").Value, Len(Range("I2").Value) - 2))

Remplace "I2" par les cellules que tu parcours
et recopie v dans ton fichier résultat
 

Anto35200

XLDnaute Occasionnel
Re : Macro pour reporter un montant en focntion du signe.

Bonjour,


Merci de ta réponse,

Avec les commentaires des codes, cela m’aide à mieux comprendre.
Néanmoins, j’ai un autre fichier cafacto.xls à importer dans mon Tableau 2 du fichier résultat, mais je ne vois pas comment faire car celui-ci les données sont en colonne non en ligne.

:confused:
 

Pièces jointes

  • cafacto.xlsx
    11.5 KB · Affichages: 31
  • résultat.xls
    40.5 KB · Affichages: 23
  • résultat.xls
    40.5 KB · Affichages: 26
  • résultat.xls
    40.5 KB · Affichages: 27

Iznogood1

XLDnaute Impliqué
Re : Macro pour reporter un montant en focntion du signe.

Diantre.
Ca dépende de beaucoup de choses.
Si ton fichier cafacto est toujours formaté de la même façon (les mêmes infos dans les mêmes cellules), il suffit de parcourir ces cellules et de reporter les valeurs dans l'extraction.
Sinon il faut parcourir ligne à ligne et bâtir le bon algorithme qui permettra de savoir quelle information se trouve sur chaque ligne...

Bon courage !
 

Anto35200

XLDnaute Occasionnel
Re : Macro pour reporter un montant en focntion du signe.

Bonjour Iznogood1,

Ton code suivant, implique que je dois aller chercher le fichier dans un dossier spécifique :
Code:
Private Sub cbImport_Click()
  Dim file As Variant 'Nom du fichier à ouvrir
  Dim wb As Workbook  'Le fichier ouvert
  Dim i As Integer    'Un compteur
  Dim v               'Valeur lue dans extraction

  
  'Ouvrir le fichier extractions
  Application.ScreenUpdating = False
  file = Application.GetOpenFilename("XL Files (*.xls*), *.xls*")
  If file <> False Then Set wb = Workbooks.Open(file)
  
  'Parcourir les colonnes H à N de la ligne 2 du fichier extraction
  'et recopier les valeurs dans B1 à B7 de la feuille active
  For i = 1 To 7
    v = wb.Worksheets(1).Cells(2, i + 7).Value
    If Len(v) > 2 Then
      Range("B" & i).Value = IIf(Right(v, 2) = "DB", -Left(v, Len(v) - 2), v)
    Else
      Range("B" & i).Value = v
    End If
  Next i
  
  wb.Close False
  
End Sub


Je souhaite que la macro aille l'ouvrir automatiquement ce fichier. Est-ce qu'il faut mettre ce code au début de ta macro ?
Code:
Private Sub cbImport_Click()
  Dim file As Variant 'Nom du fichier à ouvrir
  Dim wb As Workbook  'Le fichier ouvert
  Dim i As Integer    'Un compteur
  Dim v               'Valeur lue dans extraction

  Workbooks.Open Filename:="C:\chemein du fichier..."
  
  
  'Parcourir les colonnes H à N de la ligne 2 du fichier extraction
  'et recopier les valeurs dans B1 à B7 de la feuille active
  For i = 1 To 7
    v = wb.Worksheets(1).Cells(2, i + 7).Value
    If Len(v) > 2 Then
      Range("B" & i).Value = IIf(Right(v, 2) = "DB", -Left(v, Len(v) - 2), v)
    Else
      Range("B" & i).Value = v
    End If
  Next i
  
  wb.Close False
  
End Sub

Merci de ton retour,
 

Anto35200

XLDnaute Occasionnel
Re : Macro pour reporter un montant en focntion du signe.

Bonjour Iznoggod1,

Premièrement :J'aimerai modifier dans ton code comment peut-on copier la plage de cellule B1 à B5 dans une autre plage, par exemple de F10 à F14.


Deuxièmement :

Comment fait-on pour insérer un bouton de commande Active X ?
 

Discussions similaires

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 294
Messages
2 086 895
Membres
103 404
dernier inscrit
sultan87