Copier les valeurs d'une colonne sans les cellules vides

Bonjour à tous,

J'ai une feuille dans laquelle j'ai 4 colonnes contenant des valeurs numériques avec des blancs entres elles.

J'aurais besoin d'avoir une liste "compactée" de ces valeurs pour chaque colonne, sans les cellules vides.

Je précise que dans chaque colonne, toutes les cellules contiennent des formules et que les valeurs qui apparaissent sont le résultat de ces formules. Les cellules qui apparaissent vides, contiennent donc aussi des formules (dans l'exemple ci-dessous, j'ai du les enlever).

Ces listes changent donc à chaque fois que j'effectue des opérations et j'aurais donc besoin d'avoir que les valeurs qui apparaissent les unes à la suite des autres de chaque colonne de façon automatique.

J'ai effectué plusieurs recherches, mais je n'arrive pas à régler le problème...

En vous remerciant par avance pour votre aide

Jérôme

Salut jerosan,

à mon sens, pas possible sans écraser tes formules et/ou modifier les résultats...

Mais, n'étant pas du tout expert des fonctions "secrètes" d'Excel, je vais attendre l'avis des experts avant de te proposer une solution.

Peut-être une première, toute bête : inscrire cette liste dans la colonne à côté ?

A+

Bonsoir,

Merci pour ta réponse,

Oui pourquoi pas! Comme cela on aurait une colonne avec les formules et une autre colonne intermédiaire avec seulement les valeurs.

Bonne soirée

jerosan,

on peut connaître ces formules ou secret défense ?

- séquence de déclenchement du calcul pour chaque colonne ?

A+

Bonjour,

à tester, Le résultat est mit sur la Feuil2

Sub test()
With Sheets("Feuil1")
 For y = 2 To 8 Step 2
  For i = 2 To .Cells(Rows.Count, y).End(xlUp).Row
   If .Cells(i, y).Value <> " " And Not IsEmpty(.Cells(i, y)) Then
     n = Sheets("Feuil2").Cells(Rows.Count, y).End(xlUp).Row + 1
     Sheets("Feuil2").Cells(n, y).Value = .Cells(i, y).Value
   End If
  Next i
 Next y
End With
End Sub

Alors non vraiment rien de méchant

C'est juste que ça renvoie à une autre feuille e c'est une formule toute bête:

=SI(ET('[matrice A.xlsm]Feuil1'!R3=A3;'[matrice B.xlsm]Feuil1'!R3=A3);A3;" ")

On a ça pour chaque cellule de chaque colonne.

Merci

Merci i20100 pour la réponse!

Oui ça fonctionne très bien!!

J'ai juste corrigé feuil1 à la place de feuil2 dans le code.

Merci encore!!

Jérôme

Salut jerosan,

tu dis :

Ces listes changent donc à chaque fois que j'effectue des opérations

Quelles opérations ? A partir de là, il y a peut-être moyen de créer quelque chose d'automatique !

Sois précis, stp !

A+

Bonsoir,

En fait, les valeurs que l'on voit dans chaque colonne changent selon les calculs exercés dans une autre feuille.

Ce qui veut dire que les espaces ou le nombre de cellules vides entre les valeurs dans chaque colonne changent aussi.

Le code qui m'a été proposé marche très bien mais il faut mettre à jour la liste compactée après chaque calcul.

C'est vraiment pas très grave mais si on pouvait le faire en automatique sans passer par une macro, juste avec des formules, ça serait également très intéressant.

J'espère avoir répondu à ta question.

merci en tout cas pour ton intérêt

Jérôme

Salut jerosan,

j'imagine qu'il doit bien y avoir dans un des fichiers-source repris dans tes formules...

=SI(ET('[matrice A.xlsm]Feuil1'!R3=A3;'[matrice B.xlsm]Feuil1'!R3=A3);A3;" ")

... une cellule quelconque où une opération manuelle recalcule les valeurs de la colonne [A] de ces fichiers.

Il te faut dénicher dans chacun de ces fichiers cet événement détectable en VBA.

Etant des fichiers XLSM, aucun problème d'ajouter une macro!

A partir de ce recalcul, tu insères quelques lignes pour compacter ta liste et l'affaire est faite... automatiquement!

Voici deux fichiers qui font ce que tu demandes :

  • 'Source1.xlsm' où un bouton rouge recalcule [A]...
  • repéré par les formules dans 'Target1.xlsx'.

A tester, comme on dit. Si ça te convient, on pourra creuser!

A+

17source1.xlsm (23.71 Ko)
15target1.xlsx (20.16 Ko)

Bonjour Jérôme, curulis57,

une autre possibilité avec formule matricielle,

Bonjour,

Merci curulis57 pour ton aide! C'est une alternative très intéressante effectivement, de ce fait on a la liste compactée directement.

Cependant, la première solution avec macro correspond plus à ce dont j'ai besoin. C'est juste une question d'organisation de ma feuille de calcul.

En effet, dans ce cas très précis de mon projet, la macro me permet de choisir si je compacte ou non la liste de donnée selon d'autres paramètres ou si c'est poubelle

De ce fait, je valide ou non en quelque sorte les listes de données avec ce bouton.

Mais je garde la solution automatique pour d'autres feuilles

En tout cas, chapeau bas pour votre travail et encore un grand merci à tous pour votre aide et votre réactivité!

Bonne journée!

Jérôme

Re,

Je viens de voir la version avec la formule matricielle, vraiment top!!

Merci encore

Jérôme

Merci pour ce retour, au plaisir!

si le problème est résolu, s.v.p. clôture le fil, par un clic sur le bouton

resolu

merci!

Rechercher des sujets similaires à "copier valeurs colonne vides"