Recopie auto par formule avec test

Bonjour

J'ai un autre besoin tordu et mes essais ne fonctionnent pas.

un tableau issu d'un export d'un système fournisseur contient

une cellule avec un nom de société dans LC.

puis dessous sur N lignes (N non prévisible) des cellules L(+1)C, L(+2)C ... vides

L(1)C ..L(N)C vides jusqu'à la prochaine cellule contenant une autre société,

marquant la démarcation d'un "bloc" de données suivant.

Je souhaite par formule remplir automatiquement avec le nom de la société

toutes les cellules vides qui se suivent dessous.

Arrêter la recopie dès qu'on arrive sur une cellule non vide (le nom de société suivant).

Et prendre alors cette nouvelle valeur pour recommencer la recopie dessous jusqu'à la prochaine non vide et ainsi de suite.

On parle de fichiers allant compter plusieurs milliers de lignes.

Merci

Ex:

SocA

  • (à remplir auto avec SoCA)
  • (à remplir auto avec SoCA)
  • (à remplir auto avec SoCA)
  • (à remplir auto avec SoCA)
SocB
  • (à remplir auto avec SocB)
  • (à remplir auto avec SocB)
  • (à remplir auto avec SocB)
  • (à remplir auto avec SocB)
  • (à remplir auto avec SocB)
  • (à remplir auto avec SocB)
  • (à remplir auto avec SocB)
SocD
  • (à remplir auto avec SocD)
  • (à remplir auto avec SocD)
etc.

Bonjour

Une méthode

Cordialement

12classeur1.xls (13.50 Ko)

merci

Mais ca oblige à ajouter une colonne.

J'avais fait cette même formule, mais sur la conne des societé (ref circulaire)

PAs moyen de rester sur la même colonne?

Bonjour

PAs moyen de rester sur la même colonne?

Si, mais pas avec une formule; avec un code VBA dans un module

Cordialement

19classeur1.zip (6.86 Ko)

Bonsoir elz64 et Amadéus,

un essai via macro.

Cordialement.

12elz64.zip (8.36 Ko)
Amadéus a écrit :

Bonjour

PAs moyen de rester sur la même colonne?

Si, mais pas avec une formule; avec un code VBA dans un module

Cordialement

En effet merci pour ce code. c'est la piste à suivre.

Je vais essayer (je ne connais pas le VBS) d'ajouter un test supplémentaire [et ca part mal !] car

en l'état, que se passe-t-il APRES la dernière donnée..

je croyais que le texte de la dernière cellule allait se remplir jusqu'en bas (A65000) .. et non (comprends plus)

Mais du coup, il ne peut y avoir de recopie de cette dernière chaine sur un nombre adequate de ligne.

il faut ajouter manuellement dans le fichier une cellule contenant "FIN" par exemple et tester pour ne recopier tout que jusqu'à se qu'on rencontre ce "FIN"..

non ?

Bonjour

La ligne de Code

For Each Cel In Range("A2:A" & [A65000].End(xlUp).Row)

prend comme champ d'action de A2 à la dernière cellule remplie entre A2 et A65000

Cela étant, deux solutions sont possibles pour déterminer où doit s'arrêter la recopie de la denière cellule remplie:

1) Exemple pour remplir 2 cellules après la dernière remplie

For Each Cel In Range("A2:A" & [A65000].End(xlUp).Offset(2, 0).Row)

en changeant le 2 de Offset(2,0), tu peux ajouter.

2) Avec le code tel qu'il est actuellement, c'est aussi une solution que d'inscrire Fin pour indiquer où s'arrête l'action de la macro.

Cordialement

Rechercher des sujets similaires à "recopie auto formule test"