macro avec de multiples conditions (alors que je sais que je n'ai pas le niveau)

syl

XLDnaute Nouveau
Bonjour,

Je suis un utilisateur somme toute plutôt débutant de excel mais, dans ma situation je n'ai pas d'autre choix que de tenter de créer un macro plutôt complexe.
Tous les mois nous devons faire des mises à niveau de documents, et c'est plus que fastidieux.
Nous avons un classeur de base qui contient 5 colonnes et qui nous sert à remettre à jour (rajouter des lignes de données et/ou modifier des lignes existantes et/ou réorganiser les lignes dans le nouvel ordre) d'autres documents contenant eux aussi ces 5 colonnes mais qui sont complétés par des colonnes supplémentaires.

Il y a un suivi du versioning donc nous savons quelles lignes modifier. Mais à la main c'est extrêmement fastidieux. C'est pourquoi je veux faire une macro qui effectue les actes automatiquement.
Un extrait du document utilisé est mis en PJ.

J'ai essayé de décrire au mieux et le plus techniquement possible chacune de celles ci. Je sais qu'il faudra modifier des variables (par exemple le numéro de version concerné, etc...)

Dans l'ordre :
Chercher les lignes qui représentent la nouvelle version à partir de la colonne "Version".
chercher la donnée "codes" de la première ligne (appelée x) dans la colonne codes du classeur à modifier.
si la donnée est trouvée dans le classeur à modifier (la ligne étant appelée Y) alors vérifier la donnée TYPE de MISE à JOUR de la ligne x avec la donnée TYPE de MISE à JOUR de la ligne Y du classeur à modifier.
si c'est "Ajouté" alors colorer la ligne en rouge, puisque normalement elle ne devrait pas déjà exister et que ça signale une erreur dans la gestion du tableau.
si c'est modifié ou supprimé alors écraser les cases A à G de la ligne concernée du classeur à modifier en utilisant les cases Ax à Gx du classeur de référence.

si la donnée n'existe pas dans le classeur à modifier alors rechercher la donnée codes de la ligne x-1 et la chercher dans le classeur à modifier. Si elle est trouvée (appelée Z) alors effectuer la même recherche avec x+1 et Z+1.
Si ces deux checks sont bons alors insérer les cases A à G X entre Z et Z+1.
Sinon mettre la ligne en rouge dans le classeur

Je pense qu'il faudra faire une deuxième macro ensuite qui remettra les lignes dans l'ordre. Je préf_re faire deux macros pour pouvoir corriger d'éventuelles erreurs (les lignes rouges) avant la mise en ordre.

toujours dans l'ordre :
régler les variables de lignes. (x = ligne du classeur de référence, Y = ligne du classeur à modifier pour X=Y en CHARVAR)
chercher la données code de x dans la colonne code du classeur à modifier.
si le numéro de la ligne y (en relatif) est égal au numéro de X alors passer à X+1.
Sinon couper la ligne y et la coller à la valeur relative de x (dans le classeur Y)
puis recommencer le test à x


Alors en utilisant la création de macros en suivant nos actions j'ai récupéré les instructions suivantes pour insérer une ligne et couper/coller les cases nécessaires.
Selection.Insert Shift:=xlDown
Range("là c'est une variable qu'il faut mettre mais je ne sais pas comment la créer").Select
Selection.Copy
Range("variable").Select
ActiveSheet.Paste
Rows("variable").Select
Application.CutCopyMode = False
Selection.Delete Shift:=xlUp

Ca me parait cohérent mais je suis vraiment débutant donc je ne sais pas faire des conditions dans des macros (et je dois mal faire mes recherches car google ne m'aide pas). J'ai pensé à SI ou à rechercheV mais ces fonctions renvoient des résultats, elles n'initient pas des actions.

Donc après tout ce laius ma question est : où puis je trouver une liste contenant les instructions dont j'ai besoin ?
En effet j'aimerais bien comprendre ce que je fais (selon le principe du poisson donnée ou de l'apprentissage de la pêche ^^)

d'avance Merci, et en espérant avoir été clair

Syl
 

Pièces jointes

  • Nouveau Feuille de calcul Microsoft Excel (2).xls
    28.5 KB · Affichages: 133
  • Nouveau Feuille de calcul Microsoft Excel (2).xls
    28.5 KB · Affichages: 133
  • Nouveau Feuille de calcul Microsoft Excel (2).xls
    28.5 KB · Affichages: 133

Paritec

XLDnaute Barbatruc
Re : macro avec de multiples conditions (alors que je sais que je n'ai pas le niveau)

Bonjour Syl le forum
bon alors le classeur c'est quoi celui que tu as envoyé?
ensuite plutôt que 1 kilomètre de discours tu pourrais me mettre dans une feuille le résultat souhaité car pour le moment tu parles de vérifier si etc etc etc mais moi je n'ai vu qu'un tableau avec tout au plus 10 lignes.
de plus les explications c'est dans le fichiers qu'elles sont utiles je pense
a+
papou :eek:
 

syl

XLDnaute Nouveau
Re : macro avec de multiples conditions

Bonjour et merci de m'avoir répondu,

Donc je cherche une macro qui prenne les données de mon classeur appelé dictionnaire dans ses différents onglets (données personnelles, données administratives, etc...) pour les comparer avec celle du classeur de croisement.

il faut qu'elle repère les lignes qui ont été modifiées dans la dernière version seulement (ici V3.1) et qu'elle les reporte dans l'autre fichier.
il faut donc qu'elle crée les lignes qui correspondent à V3.1 "ajouté" et qu'elle modifie les lignes qui portent la mention "modifié" ou "supprimé" toujours en V3.1
Il faut par contre qu'elle ne modifie que les cases des colonnes A à G. car selon le fichier les données portées apr les autres colonnes diffèrent (sinon pourquoi faire deux fichiers ?).

Mon problème est que je ne peux pas me baser sur le numéro des lignes car il arrive qu'il y ait des interversions. C'est pour ça que je pensais vérifier le contenu de la ligne du dessus et de la ligne du dessous pour savoir si la modification était faite dans la bonne place "relative".


Et dans un deuxième temps je voulais une deuxième macro qui remette les lignes du fichier de croisement dans le même ordre que l'est le dictionnaire des données. La par contre je voulais que toute la ligne soit déplacée.

Donc je cherche une liste où je puisse trouver les instructions qui me permettent de cherche les lignes concernées, le reste je pense pouvoir me débrouiller mais ça je ne sais pas le faire.

Est ce que c'est plus clair comme ça ?

Syl
 
Dernière édition:

Paritec

XLDnaute Barbatruc
Re : macro avec de multiples conditions (alors que je sais que je n'ai pas le niveau)

Re Syl,
alors pour les deux classeurs là , ils sont ou ??? en tous cas pas passé dans ton message
il faut des fichiers maxi 48 kilo
a+
papou :eek:
 

Paritec

XLDnaute Barbatruc
Re : macro avec de multiples conditions (alors que je sais que je n'ai pas le niveau)

Re Syl,
alors oui là les fichiers pas de soucis, maintenant j'ai ouvert et je vais essayé de comprendre ce que tu veux mais là c'est pas gagné enfin je vais lire et relire
a+
papou :eek:
 

Paritec

XLDnaute Barbatruc
Re : macro avec de multiples conditions (alors que je sais que je n'ai pas le niveau)

Re Re syl,
alors premier problème je suppose que ce qui caractérise la recherche c'est la colonne F dans dictionnaire et F dans croisement ??
alors maintenant deuxième problème tu parles de contrôler la version 3.1 OK mais dans croisement il n'y a pas de version 3.1 , tu en as dans dictionnaire mais pas dans croisement???
alors bon je pense que je ne suis pas sur la bonne piste ou bien ????
a+
papou :eek:
 

syl

XLDnaute Nouveau
Re : macro avec de multiples conditions (alors que je sais que je n'ai pas le niveau)

Oula, je me suis mal expliqué.

Alors d'abord merci de te pencher sur mon problème.
c'est normal qu'il n'y ait pas de V3.1 dans croisement puisque l'idée c'est de pouvoir mettre à jour ce document.
Et donc repérer les changements qu'apporte la V3.1 dans le dictionnaire pour les appliquer au fichier de croisement. Et la difficulté c'est que croisement contient des données complémentaires et que donc je ne peux pas faire un bête copié/collé.

Quant à la colonne de vérification je pensais plutôt en utiliser 2 en parallèle : les colonnes D et E du dictionnaire (sous rubrique et code). Code tout seul ne suffit pas vraiment car il y a quelques données qui apparaissent plusieurs fois (c'est normal c'est une représentation logique). ce qui correspond dans le fichier croisement aux colonnes F et G (il y a un décalage d'une colonne).

Je ne suis pas sur de répondre à la question mais encore merci. Mon problème est justement que je ne sais pas faire ces recherches dans une macro.
 

Paritec

XLDnaute Barbatruc
Re : macro avec de multiples conditions (alors que je sais que je n'ai pas le niveau)

Bonjour Syl le forum
alors de ce que j'ai compris, il faut faire une liste avec les feuilles dictionnaires de tout ce qui s'appelle V3.1 et après les rentrer dans Croisement DDD, donc je vais déjà faire la liste et après tu vas m'expliquer pas à pas ce que je dois chercher ajouter, colorier.
Bon alors déjà un point d'arrêt, tu as dans dictionnaire 7 feuilles donc 4 on a peu près la même structure et définition de colonnes et 3 avec une structure différente, alors donc pour toutes les lignes trouvées en v3.1 on ne doit pas récupérer de A à G ??????????
En bref tu connais ton fichier par cœur mais nous pas encore alors on cherche à comprendre.
a+
papou :eek:
 
Dernière édition:

syl

XLDnaute Nouveau
Re : macro avec de multiples conditions (alors que je sais que je n'ai pas le niveau)

Bonjour Syl
alors de ce que j'ai compris, il faut faire une liste avec les feuilles dictionnaires de tout ce qui s'appelle V3.1 et après les rentrer dans Croisement DDD, donc je vais déjà faire la liste et après tu vas m'expliquer pas à pas ce que je dois chercher ajouter, colorier.

Bonjour oui, c'est exactement ça.

Bon alors déjà un point d'arrêt, tu as dans dictionnaire 7 feuilles donc 4 on a peu près la même structure et définition de colonnes et 3 avec une structure différente, alors donc pour toutes les lignes trouvées en v3.1 on ne doit pas récupérer de A à G ??????????
En bref tu connais ton fichier par cœur mais nous pas encore alors on cherche à comprendre.
Ah j'avais oublié les onglets en question. alors pour ces onglets (activité,sujétions et vacations), je vais les enlever. Ils demandent un arbitrage avant d'être intégrés, donc il vaut mieux ne pas les prendre en compte.

Voici un lien vers le dictionnaire dont j'ai ôté les onglets problématiques.
Avec toutes mes excuses.
 

syl

XLDnaute Nouveau
Re : macro avec de multiples conditions (alors que je sais que je n'ai pas le niveau)

Re Paritec,

Ben oui ce sont exactement ces lignes là qu'il faut intégrer dans croisement. Et j'ai jeté un oeil à la macro. Si je l'ai bien comprise il me suffira de remplacer 3.1 par la version souhaitée dans le futur. C'est génial.
Juste une question (tout à fait optionnelle, c'est de la curiosité) : Dans la macro tu fixes la taille des colonnes de la nouvelle feuille. Il y a une raison précise, que je ne devine pas ?

Merci encore pour ta patience.

Syl
 

Paritec

XLDnaute Barbatruc
Re : macro avec de multiples conditions (alors que je sais que je n'ai pas le niveau)

Re bonjour syl,
pour la modification future oui tu as tout a fait raison sauf que j'ai prévu de te mettre une imputbox pour taper la version à collecter.
Pour la largeur des colonnes c'est simplement parce que je ne veux pas avoir une liste de 1 kilomètre et que lors de la création les colonnes font par défaut 25 et que sur ta feuille le .autofit ne marche pas et j'ai pas cherché pourquoi
voilà tu sais tout
bon alors maintenant on a la liste on fait quoi?
a+
papou :eek:
 

syl

XLDnaute Nouveau
Re : macro avec de multiples conditions (alors que je sais que je n'ai pas le niveau)

Alors

L'objectif est que les lignes qui portent la mention "modifié" ou "supprimé" dans la colonne B "Type de mise à jour" remplace les lignes préexistantes dans le fichier croisement.
En gros ces données existent déjà et sont modifiées par la nouvelle version. Petit problème certains codes de données (colonne E) existent plusieurs fois alors que seule une d'entre elle est modifiée. Lorsque nous le faisons manuellement nous vérifions que c'est la bonne donnée par l'utilisation de la colonne sous rubrique.

C'est pour ça que je proposais de comparer avec les lignes précédente et suivante entre le DDD et le croisement.

bon je dirais bien qu'un seul problème à la fois suffit mais le sujet est presque le même pour les lignes "ajoutées". il faut en effet les insérer au bon endroit.

Est ce que c'est assez clair ?

syl
 

Discussions similaires

Statistiques des forums

Discussions
312 196
Messages
2 086 100
Membres
103 116
dernier inscrit
kutobi87