XL 2019 Si cellule vide alors...on copie la cellule en regard de la colonne suivante

thespeedy20

XLDnaute Occasionnel
Bonjour à tous

J'ai un tableau avec des noms comme celui-ci

Tab1.JPG


et j'aimerais que le tableau soit comme celui-ci

Tab2.JPG


Je parviens à transférer les noms de la nom1 et pour le reste je cale....

Merci pour votre aide

OLi
 

Pièces jointes

  • Col_vide.xlsm
    16.2 KB · Affichages: 29

mapomme

XLDnaute Barbatruc
Supporter XLD
Pour ton PC:Tu as mis les mains dans le cambouis ou tu as mis le carton dans le caddy
Pour la première fois, j'ai acheté du tout fait chez Materiel.net (racheté par LDLC). Au niveau tarif, c'est moins cher que du fait maison. On a tendance, quand on part de rien et qu'on a le choix, à se laisser toujours tenter par le composant légèrement plus performant mais plus couteux. A la fin l'addition est bien plus élevée que le bon matos tout fait.
Soit dit en passant, recevoir le colis, tout poser sur la bureau, allumer et hop ça marche, c'est très agréable sur le coup :) . Mais c'est bien moins gratifiant que le self made PC :(.
 

soan

XLDnaute Barbatruc
Inactif
@thespeedy20

désolé pour le retard ; dans ton post #22, tu as écrit : « oui, je veux bien une
adaptation pour 4 colonnes qui correspond à mon tableau final.... »

nouveau fichier, adapté pour 4 colonnes, de K à N

* sur la feuille : ajout de la colonne N "Nom3"

* sub col_vide() : 2 lignes
For col... à adapter

* sub Job() : inchangée


soan
 

Pièces jointes

  • Col_vide.xlsm
    17.7 KB · Affichages: 3

soan

XLDnaute Barbatruc
Inactif
@Staple1600

je crois que tu as oublié de répondre à la question de thespeedy20 : « Tu peux dire
quels paramètres changer pour agrandir le tableau de tri ? » (son post #22) ; ou
peut-être que tu lui as déjà répondu ? (et j'ai zappé ta réponse)


--------------------------------------------------------------------------------------------

tu as un PC de 2010, donc vieux de 10 ans déjà ! j'm'étonne pas que tu aies écrit :
« ma carte mère ne supporte pas plus de 8 Go » ; sûr que ça te coûterait plus cher de
mettre à niveau tous les composants actuels de ton PC que d'en acheter un neuf !!!

avec un PC neuf, tu auras : une carte mère récente + microprocesseur véloce
(Intel i5, Intel i7, ou Amd Ryzen, au choix ; minimum à 3.10 GHz) + RAM DDR 5
16 Go (car il me semble qu'avec Windows 10, 8 Go RAM sont un peu justes) +
une carte SSD (au lieu d'un disque dur = démarrage et accès en lecture-écriture
plus rapides) + ports USB 3.0 (à tout hasard, vérifie si y'a pas DDR 6 ou plus,
et peut-être ports USB 4.0).

pour les i7, je crois qu'Intel a réussi à réduire la fréquence (donc la consommation
électrique et les risques de surchauffe) tout en conservant les performances ; il se
peut que ça soit aux environs de 1,8 GHz (à vérifier avant d'acheter !) ; j'peux pas
t'aider pour choisir entre un Intel et un AMD Ryzen : j'm'y connais pas assez.

pour le réseau, une connexion par câble Ethernet est bien plus sûre et plus rapide
qu'une connexion WiFi ; avec le WiFi, tu as le risque qu'un hacker pirate ta ligne.

bien sûr, tu devras réinstaller tous tes logiciels, y compris Office ; peut-être que
tu pourras avoir une réduction si tu achètes Office 2019 en même temps que
ton PC neuf ? si tu mets ton ancien Office, attention à c'qui concerne la
« clé d'activation » (appelée parfois aussi « code de produit Office »).

j'sais pas très bien quelle est la procédure à suivre ; j'crois qu'il faut commencer
par désinstaller Office de ton ancien PC pour « libérer » la clé (vu qu'Office ne
peut pas être activé sur 2 PC en même temps, sauf licences multi-PC) ; ensuite,
il faudrait réinstaller Office sur le nouveau PC (à partir de ton DVD ? ou du
réseau ?) ; et ré-activer Office ; mais demande plus de précisions @mapomme
(il doit connaître ça mieux que moi !).

pour le choix d'un bon matériel aussi, mapomme pourra te conseiller mieux
que moi ; c'est normal : il est Barbatruc ; moi, j'suis seulement Accro. :p


soan
 

Staple1600

XLDnaute Barbatruc
Re

[aparté toujours et encore -avec des bouts d'humour dedans]
Nul besoin de changer de PC tant qu'il fonctionne.
Nul besoin que le code s’exécute en moins d'une seconde.
(L'envie peut-être, mais le besoin, non ;))
Déjà qu'en télétravaillant, on travaille plus que de coutume, si en plus j'optimise à donf mes procédures VBA, je bosserai plus vite pour pas un kopeck de plus. ;)
(Et donc je servirai le Grand Capital à l'insu de mon plein gré, alors que les mois en bre, je penche plutôt pour le slow movement.)
Point de DVD pour mon Office mais un ClickToRun
Point de Wifi, rien que du RJ45
Mais un jour, un jour ou l'autre
Je sais que la malice viendra chez moi
Pour une sombre histoire de coeurs (core)
A moins que ce ne soit plutôt
Pour l'affaire de mon HD foutu
Alors seulement j'acheterais un nouveau PC ;)
[/aparté- sans oublier des emprunts à Hubert]]
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Bonsoir le fil

@soan
Pour répondre à ton questionnement du message#33
Je n'ai pas oublié.
J'ai même répondu avant que la question ne soit posée ;)
(cf le PS du message#20 qui était une invitation subliminale à oublier ma procédure dans le cas présent puisque c'est plus rapide avec les Arrays)
Mais puisque re-confinement il y a, je vais prendre le temps de titiller ce bout de code pour "l'universaliser".
 

thespeedy20

XLDnaute Occasionnel
Bonjour le fil,

après essais de chaque code sauf celui Staple1600 qui doit titiller ce bout de code pour 'universaliser....

Dans les deux cas, il effectue le travail demandé...

@mapomme,
Ton code sur 2000 lignes tourne en 0,05 seconde

@soan,
Pour le tien, il tourne en 0,71 seconde


voici mon retour pour information, et je tiens encore à vous remercier pour votre temps et partage dans une phase de mon projet.

OLi
 

Staple1600

XLDnaute Barbatruc
Re

Donc un code un peu modifié
A tester sur un classeur vierge
1) On lance la macro Créer_Exemple
2) Puis la macro qui Trie
VB:
Sub Créer_Exemple()
Randomize
Cells.Clear
Range(Cells(1), Cells(Application.RandBetween(25, 75), 15)).FormulaR1C1 = "=INT(MOD(ROW(),RAND()*COLUMN()))"
ActiveSheet.UsedRange = ActiveSheet.UsedRange.Value
ActiveSheet.UsedRange.Replace What:="0", Replacement:="", LookAt:=xlPart, SearchOrder:=xlByRows
End Sub
Sub Tri_Gauche_Droite_Modifié()
Dim i As Long
Application.ScreenUpdating = False
t = Timer()
Set Rng = ActiveSheet.UsedRange
'tri les données lignes par lignes de la gauche vers la droite
With Rng
    For i = 1 To .Rows.Count
    .Cells(i, 1).Resize(, Rng.Columns.Count).Sort Key1:=.Cells(i, 1), Order1:=2, Orientation:=xlLeftToRight
    Next
End With
MsgBox Timer - t
End Sub
NB: Comme je l'ai dit, c'est juste illustratif.
Les autre solutions étant plus rapides et abouties.
 

Discussions similaires

Réponses
4
Affichages
230