1. Ce site utilise des "témoins de connexion" (cookies) conformes aux textes de l'Union Européenne. Continuer à naviguer sur nos pages vaut acceptation de notre règlement en la matière. En savoir plus.

XL 2010 transfert colonnes Array [RESOLU]

Discussion dans 'Forum Excel' démarrée par cathodique, 19 Mai 2017.

  1. cathodique

    cathodique XLDnaute Accro

    Inscrit depuis le :
    3 Mars 2012
    Messages :
    1332
    "J'aime" reçus :
    62
    Sexe :
    Masculin
    Habite à:
    Montreuil
    Utilise:
    Excel 2010 (PC)
    Bonjour:),

    Me revoilà, Job75 (Merci beaucoup) m'avait concocté un code en rapport avec cette DISCUSSION

    Le résultat souhaité serait identique à l'exception que les 2 colonnes recettes et dépenses soient fusionnées en 1 seule colonne, avec l'ajout de la colonne opérations.

    J'ai commencé un code avec des arrays (dont le début m'avait été proposé par Klin89 que je salue), mais mon code plante sur le dimensionnement du 2ème array. Je voulais passer par un autre tableau pour fusionner les 2 colonnes.
    Dim tableau.JPG

    En vous remerciant par avance.

    Bon Week-End.
     
  2. job75

    job75 XLDnaute Barbatruc

    Inscrit depuis le :
    15 Mai 2008
    Messages :
    22467
    "J'aime" reçus :
    1509
    Sexe :
    Masculin
    Habite à:
    Paris
    Utilise:
    Excel 2013 (PC)
    Bonjour cathodique,

    Ci-joint ton fichier de l'autre fil avec cette macro :
    Code (Text):
    Private Sub Worksheet_Activate()
    Dim col, n As Long, tablo
    col = [{2,"N°";1,"Date";5,"Initiateur";9,"Mt_Initial";8,"Détails";6,"Dépenses(-)/Recettes";7,"";12,"Pointage"}]
    Application.ScreenUpdating = False
    Cells.Delete 'RAZ
    For n = 1 To UBound(col)
      Feuil1.[A5].CurrentRegion.Columns(col(n, 1)).Copy Cells(1, n)
      Cells(1, n) = col(n, 2)
    Next n
    '---regroupement Dépenses/Recettes---
    tablo = [A1].CurrentRegion.Columns(6).Resize(, 2) 'matrice, plus rapide
    For n = 2 To UBound(tablo)
      If tablo(n, 1) <> "" Then
        If IsNumeric(CStr(tablo(n, 1))) Then tablo(n, 1) = -tablo(n, 1)
      Else
        tablo(n, 1) = tablo(n, 2)
      End If
    Next n
    [F1].Resize(UBound(tablo)) = tablo
    Columns(7).Delete
    Columns.AutoFit 'ajustement largeur
    End Sub
    Il est inutile de copier la colonne "Opérations", il me paraît beaucoup mieux de mettre le signe - devant les dépenses.

    De cette manière tu peux facilement faire le total...

    A+
     

    Pièces jointes:

  3. cathodique

    cathodique XLDnaute Accro

    Inscrit depuis le :
    3 Mars 2012
    Messages :
    1332
    "J'aime" reçus :
    62
    Sexe :
    Masculin
    Habite à:
    Montreuil
    Utilise:
    Excel 2010 (PC)
    Mon cher Job75,

    Je te remercie beaucoup pour ton aide, mais pourquoi des valeurs négatives?
    ça doit être -tablo(n,1).

    En tout cas merci beaucoup, je revois ton code pour aller un peu plus loin.

    Bon week-end.
     
  4. cathodique

    cathodique XLDnaute Accro

    Inscrit depuis le :
    3 Mars 2012
    Messages :
    1332
    "J'aime" reçus :
    62
    Sexe :
    Masculin
    Habite à:
    Montreuil
    Utilise:
    Excel 2010 (PC)
    Re Job75,

    Désolé c'est de ma faute, omis de préciser que sur une ligne il ne peut avoir qu'une seule valeur soit recettes ou dépenses.

    Merci beaucoup.
     
  5. job75

    job75 XLDnaute Barbatruc

    Inscrit depuis le :
    15 Mai 2008
    Messages :
    22467
    "J'aime" reçus :
    1509
    Sexe :
    Masculin
    Habite à:
    Paris
    Utilise:
    Excel 2013 (PC)
    Re,
    Ben oui c'est évident, et je m'en sers, as-tu seulement essayé de comprendre ce que je propose ?

    Ce n'est pas la mer à boire, tu as 1315 posts à ton actif !

    A+
     
  6. cathodique

    cathodique XLDnaute Accro

    Inscrit depuis le :
    3 Mars 2012
    Messages :
    1332
    "J'aime" reçus :
    62
    Sexe :
    Masculin
    Habite à:
    Montreuil
    Utilise:
    Excel 2010 (PC)
    Oui, J'ai repris code dans une sub standard, puis F8. J'ai bien compris.
    Je ne pratique pas régulièrement (inscrit depuis 2008 et seulement 1315) et l'âge fait que la mémoire décline régulièrement.
    Pour info, des fois ça fuse et d'autres ça patine. Allez, comprendre quelque chose!
    Merci beaucoup.

    ps: 22415/1315=17.04 tu as 17 fois plus de posts que moi et tu as 1500 "j'aime"
    y a pas photo! Je m'incline tes "j'aime" dépasse le nombre de mes posts.
     
    Dernière édition: 19 Mai 2017

Partager cette page