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
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