VBA remplacer la valeur d'une cellule par la valeur de la cellule au dessu

bonjour,

je vous met a disposition on fichier que je veux modifier.

48interview.xlsx (9.34 Ko)

il est composé de lignes de de colonne, le nombre de colonne est fixé, mais le nombre de ligne est variable

cependant les colonnes que je veux retoucher c'est les colonne de 5 à 54

je veux parcourir chaque cellule de chaque colonne, si le programme trouve une cellule dont la valeur est #NAQ , il faut le remplacer par la valeur de la cellule au dessus.

sachant que dans la première colonne j'ai des numéros CR exemple :

colonne 1 :

817

817

817

813

813

et qu"il faut regrouper les lignes selon le numéro de CR, je m'expliquer je ne peux pas remplacer la valeur de la 813 par celle de la 817 mais uniquement 813 par 813 et 817 par 817

pouvez vous m'aider réaliser ce programme SVP, je suis qu'un débutant dans VBA. je vous remercie par avance

Bonjour rt bienvenue,

Et si j'écris que je comprends rien tu reformules ?

Et mets clairement le résultat escompté !...

Cdlt.

Ok. Prenant la cellule E2. Remplace sa valeur par celle de la valeur E1.

La celle E4. Remplace sa valeur par celle de la cellule E5.

Ca sera la même chose pour toute les colonne de E à BC ( de la colonne 5 à 54,)

dis moi si c'est clair stp

Bonjour thoma09, le forum,

Je te retourne ton fichier modifié :

123interview.xlsm (16.52 Ko)

Ctrl e ➯ travail effectué ; à toi de tout vérifier soigneusement !

Alt F11 pour voir le code VBA, puis revenir sur Excel

Si besoin, tu peux demander une adaptation.

Merci de me dire si ça te convient.

dhany

Bonjour dhany,

je suis désolé pour le retard, bon a première vu ça l'air de fonctionner comme je le veux, j'ai pu rajouter deux lignes d'autres et ça fonctionner. donc le code prend en compte toute les ligne de la feuille.

pour le moment tous ce que je peux demander si de commenter le code stp, et est ce que je peux te recontacter si mon chef me valide pas totalement le truc. stp je peux te contacter par mail ?

En tous les cas je te remercie beaucoup, c'est formidable

Bonjour thoma09,

voici le fichier précédent avec le code VBA commenté :

78interview.xlsm (18.49 Ko)

pour me contacter, fais-le par MP (Message Privé) ; quand j'suis débordé, j'bloque mon accès MP, alors quand t'auras besoin d'm'écrire en privé, indique-le moi sur le forum et j'ouvrirai temporairement mon accès pour voir ta demande et en faire un suivi éventuel.

comme j'ai tardé à t'répondre, j'pense que ton chef a eu tout l'temps nécessaire pour valider mon code VBA, n'est-ce-pas ?

dhany

Bonjour dhany,

je te remercie pour ta réponse c’est très gentil. effectivement mon chef n'a pas encore vu le code mais je lui montrerai ça vendredi prochain.

a travers les commentaires j'ai tout compris.

c'est noté pour le moyen de te contacter. encore un grand merci, à très bientôt. Bonne journée à toi

Bonjour dhany,

excuse moi de déranger, mais le programme fonctionne a moitie.

27interview-dev.xlsm (20.00 Ko)

je m'explique, cette fois j'ai pris un vrai jeu de données pour essayer le code qui tu as écris, il parait qu'elle fait pas le travail sur toutes les lignes de la colonne 4 a 53.

Il faut noter que le nombre de lignes est variable , aujourd'hui ça peut être 3 ligne mais demain ça peut être 15 lignes.

je te joins le fichier dont la macro et le vrai jeu de données. peux tu regarder stp. je te remercie par avance,

contact moi si tu as besoin d'autres information

dans ton 1er fichier, la dernière colonne était la BB (non compris les nombres en bleu de ta colonne BC) ; maint'nant, la dernière colonne est la BI ; donc mon code VBA ignore les colonnes BC à BI ; c'est bien de ça que tu parles, n'est-ce pas ? et faut-il un code VBA pour un nombre variable de colonnes ou pour un nombre fixe de colonnes (jusqu'à BI) ?

d'autre part, la cellule A9 est vide alors qu'il faudrait un numéro de CR ! d'après ton énoncé de départ, il me semble que chaque ligne utilisée devrait avoir un numéro CR !

à te lire pour la suite, mais c'est pas urgent car j'ai des affaires personnelles à régler (j'vais être pris jusque très tard ce soir).

donc si j'trouve pas un moment de libre, le nouveau code sera pour demain après-midi ou même demain soir !


remarque : pour les colonnes à prendre en compte, il faudrait ajuster For dv = 4 To 53 (essaye déjà de le faire toi )

si tu augmentes le 53, ça fera le travail pour plus de colonnes (mais si le nombre de colonnes est variable, alors il faut

calculer quelle est la dernière colonne utilisée).


ps : indique plus précisément là où ça va pas dans le fichier actuel : de quelle ligne à quelle ligne ; de quelle colonne à quelle colonne (car mon code VBA actuel fait la même chose pour chaque colonne incluse dans E:BB) ; quelles sont les données concernées et en quoi ? y aurait-il des "#NAQ" non remplacés alors qu'ils le pourraient ? ou autre chose ?

dhany

bonjour dhany,

44interview-dev.xlsm (21.44 Ko)

effectivement les colonne a traiter sont de E a BB. donc de 4 a 53

les colonnes qui viennent après BB faut pas tenir compte.

la ligne 9, elle été vide je ne sais pas ce qu'elle fait la mais je l'ai retirer.

j'ai relancer la macro, la ca marché mais pas a 100%, car dans le fichier ci-joint tu verra la ligne 7 et 8 ont le même numéro CR = 831 et malgré ça , le remplacement des #NAQ ne s'est pas fait. dans le fichier joint j'ai mis ces deux ligne en couleur rose.

juste pour info: les lignes de couleur jaune, se sont des lignes qui ne doivent pas être changé ( la macro les a bien détectés ) puisque aucune d'elles n'a une autre ligne du même Numéro CR, tu verra il y a la 829 867 883 et la 891.

c'est a dire ici on fais un remplacement juste pour les lignes dont le numéro CR est le même. pour le moment la macro le fais bien sauf pour la ligne 7 et 8

alors ce que je peux te demander c'est de revoir les deux ligne 7 et 8 pourquoi les remplacement des #NAQ ne s'est pas fait.

un dernier truc, peux tu intégrer un petit code qui trie la colonne A du plus petit au plus grand avant que la macro commence son traitement.

merci

Bonsoir thomas,

dans ton fichier précédent, mets par exemple en C19 cette formule : =A7=A8 ... eh oui, résultat : FAUX ; voilà pourquoi ces 2 lignes n'étaient pas comparées, et donc pas de remplacement !

voici tous les changements que j'ai effectués dans le nouveau fichier de ce post :

pour A7 et A8 : format Standard au lieu de format Texte ; sélectionner la cellule, et faire F2 puis Entrée ; ces 2 choses suffisent pour que la comparaison de A7 et A8 soit la valeur VRAI, donc en laissant le programme tel quel, ça marche comme tu veux ; mais comme tu peux avoir d'autres cas de ce genre, j'ai fait un p'tit changement dans le code pour que la comparaison marche même sans changer le format : j'ai ajouté 2 Val() pour l'instruction de comparaison : If Val(.Value) = Val(.Offset(1)) Then

mais c'est quand même mieux d'être plus rigoureux dans l'application des formats : pas de mélange tel que Standard et Texte ; et plus rigoureux aussi dans la saisie, car A7 était un 831 non validé par la touche Entrée !

enfin, j'ai ajouté le tri que tu as demandé ; mais attention : il ne sera pas fait correctement pour des valeurs avec un mauvais format ou des valeurs non validées par Entrée (c'est pas les règles de validation des données).

24interview-dev.xlsm (22.74 Ko)

dhany

bonjour dhany,

désolé pour le retrad,

Oui concernant le format tu as entièrement raison la 831 est de type texte, donc j'ai intégré une petit code à la macro pour forcer toute la colonne A a se mettre au format standard comme ça le trie croissant se fait correctement.

Et la le remplacement des cellule se fait convenablement.

je vais pourvoir maintenant le montrer a mon chef demain. je te tiendrais au courant une fois que c'est fait.

Encore un grand merci pour ton aide précieuse, j'aurais jamais trouver la solution sans toi.

Bonne journée à toi Dhany

Bonjour thomas,

pour ta macro qui force toute la colonne A en format standard, tu as eu une très bonne idée !

je suppose que tu as écrit ta macro ainsi :

Sub Essai()
  Columns("A").NumberFormat = "General"
End Sub

OU

Sub Essai()
  Columns(1).NumberFormat = "General"
End Sub

bonne chance pour la présentation de demain à ton chef !

merci pour ton retour, et bonne journée à toi aussi !

dhany

Bonjour dhany,

Effectivement c'est ce code là que j'ai utilisé:

Sub Essai()
  Columns("A").NumberFormat = "General"
End Sub

Merci encore une fois, A très bientôt

Bonne journée

Rechercher des sujets similaires à "vba remplacer valeur dessu"