XL 2019 décrémenter une valeur , copie dans une autre cellule si trouve texte autre que -A

PETIT YANNICK

XLDnaute Occasionnel
Bonjour,

Je recopie de la feuille "ODM VALIDE" des valeurs dans mon cas un concaténation dans colonne Y et je la rapatrie dans la feuill "ODM" dans colonne D en partant de D2
Mon codage n'est pas très orthodoxe mais ca fonctionne.
Par contre je ne trouve pas comment faire pour copier la celule D2 à fin colonne D dans B2 ….. avec une décrémentation de la lettre si différent de A

Par exemple DET57856-D (celule d3 ) copier dans cellule b3 avec le format DET57856-C
 

Pièces jointes

  • demande validation essai1.xlsm
    29.2 KB · Affichages: 13

frangy

XLDnaute Occasionnel
Bonjour,

Essaie comme cela
VB:
Private Sub Worksheet_Activate()
Dim celluleD As Range
Dim Numero_Plan As String, Revision As String
    For Each celluleD In Range([D2], [D2].End(xlDown))
        Numero_Plan = Split(celluleD, "-")(0)
        Revision = Split(celluleD, "-")(1)
        If Revision <> "A" Then
            celluleD.Offset(0, -2) = Numero_Plan & "-" & Chr(Asc(Revision) - 1)
            celluleD.Offset(0, -3) = celluleD.Offset(0, -1)
        End If
    Next
End Sub
Cordialement.
 

PETIT YANNICK

XLDnaute Occasionnel
Bonjour Frangy,

Merci pour le retour.
Est ce que vous pouvez m'expliquer votre code?
La fonction split sert à délimiter un nouveau mot a partir d'un caractère c'est bien cela?
Chr(Asc(Revision) - 1) : ce code sert à décrémenter l'indice. Pouvez vous détailler comment cela fonctionne?

Je n'arrive pas a comprendre comment sont renseignés les cellules si indice =A


Merci d'avance
 

frangy

XLDnaute Occasionnel
La fonction split sert à délimiter un nouveau mot a partir d'un caractère c'est bien cela?
La fonction split permet de scinder une chaîne de caractères.
Dans ton cas, le séparateur choisi est le signe "-".
Le résultat se compose de 2 sous-chaînes : le NUMERO_PLAN et l’indice de REVISION.
Exemple :
VB:
Dim T
T = Split("DET57855-A", "-")
On obtient
T(0)= "DET57855"
T(1)= "A"

Chr(Asc(Revision) - 1) : ce code sert à décrémenter l'indice. Pouvez vous détailler comment cela fonctionne?
La fonction ASC renvoie un entier présentant le code ASCII.
Exemple : Asc("B") renvoie 66
La fonction Chr est la fonction réciproque. Elle renvoie le caractère associé au code de caractère.
Pour obtenir l’indice précédent, il suffit donc d’écrire
Indice Précédent = Chr(Asc(Indice) - 1)

Je n'arrive pas a comprendre comment sont renseignés les cellules si indice =A
Le report en colonne B n’est effectué qu’à la condition que l’indice soit différent de "A",
Code:
If Revision <> "A" Then …

Cordialement.
 

PETIT YANNICK

XLDnaute Occasionnel
ok merci pour les explication.
Je souhaiterais lancer la macro via le bouton "ODM Valide" si A5 contient les caractères DET ou MON
j'ai essayé en vérifiant si la cellule est bien rempli via ce code dans module 3
'If Sheets("ODM Valide").Range("A5").Value = "" Then MsgBox ("coller dans cellule A5")
'Exit Sub
ca bloque bien le bouton par contre quand je clic sur l'onglet l'odm dans lequel j'ai inséré votre macro j'ai l'erreur execution 13 qui s'affiche.
Il faudra peut etre bloquer l'onglet ODM tant que la macro n'est pas finalisé?
 

Pièces jointes

  • 2019_09_19_15_56_35_demande_validation_essai13_Enregistré.png
    2019_09_19_15_56_35_demande_validation_essai13_Enregistré.png
    59.1 KB · Affichages: 14
  • 2019_09_19_16_27_55_demande_validation_essai13_Excel1.png
    2019_09_19_16_27_55_demande_validation_essai13_Excel1.png
    37.8 KB · Affichages: 10
  • demande validation essai13.xlsm
    40.7 KB · Affichages: 5

frangy

XLDnaute Occasionnel
Quelque chose m’échappe dans ton traitement …
A l’ouverture du classeur, tu effaces les données des 3 feuilles.
D’où proviennent les données censées renseigner "ODM Valide" ?
Est-ce qu’un copier / coller est effectué systématiquement par l’opérateur après cette ouverture ?
 

PETIT YANNICK

XLDnaute Occasionnel
Oui c est bien un copier coller de l utilisateur qui renseigne la feuille odm valide. le fichier tmp18.xls est une extraction de ma base, il change de nom a chaque extraction.

J ai besoin que les données soient mise à zero à l ouverture et via un bouton reset à tout moment.
Si rien est saisie et que la macro est lancé , cela cré une erreur sur ton code erreur execution 5

C'est pourquoi Il faut que je vérifie que les données ont bien été collées depuis cellule A5 et vérifier que A5 contient DET...... ou MON (décalage copie).
Cela permet de vérifier que le copier coller à été effectué correctement.

laissé le bouton inaccessible tant que les conditions ne sont pas réuni.
je ne vois pas trop comment faire pour le moment

J ai retoucher le fichier , je cache à l ouverture du fichier la feuille odm et la montre quand macro finaliser.
 

Pièces jointes

  • demande validation essai14.xlsm
    41.8 KB · Affichages: 2
  • tmp18.tmp.xls
    34.5 KB · Affichages: 3
  • 2019_09_19_19_32_35_demande_validation_essai14_Excel.png
    2019_09_19_19_32_35_demande_validation_essai14_Excel.png
    40.7 KB · Affichages: 7
Dernière édition:

PETIT YANNICK

XLDnaute Occasionnel
Bonjour,

Merci pour le fichier, j'ai ajouté un bouton reset, j'aurais une amélioration a apporter , il faudrait que les lignes 1 à 4 soient interdite à la copie

est ce que c'est possible pour toi de détailler votre code afin que je comprennes un peu mieux.

Il faut que je fasse la meme chose pour deux nouveau onglets.

En tout cas merci beaucoup de m'avoir aider a finaliser mon code.

yannick
 

Pièces jointes

  • demande validation essai13-2.xlsm
    48.7 KB · Affichages: 2
Dernière édition:

frangy

XLDnaute Occasionnel
Bonjour,

J’ai ajouté quelques commentaires dans les codes.
Pour interdire la copie des lignes 1 à 4, j’ai verrouillé les cellules de ces lignes puis déverrouillé les cellules depuis la ligne 5 jusqu’à la fin de la feuille.
Il suffit ensuite d’activer la protection de la feuille en autorisant la sélection des cellules déverrouillées et la suppression de lignes.
Il te reste à faire le test …

Cordialement.
 

Pièces jointes

  • demande validation essai13-3.xlsm
    40.3 KB · Affichages: 3

PETIT YANNICK

XLDnaute Occasionnel
bonjour
je viens d'essayer le fichier c'est ce qu'il me fallait, je voudrais juste apporter quelques petites modifications

1)Que les lignes 1 des, onglets "ODM" et" tableau demande validation" soit non modifiable
2)Que l'onglet "ODM" et" tableau demande validation" soit vidé de leur valeur s'il y en des valeurs lorsque qu'on clic sur les boutons macros "MISE EN FORMAT TABLEAU demande de validation plan" ou"mise en forme - gemini ODM"
j'ai du mal a comprendre tous le codage , cela sort de mes compétences, a chaque fois que j'essaye de modifier pour apporter les modifs souhaitées ci dessus je plante votre codage
Lorsque j'ouvre le fichier celui ci est long a s'ouvrir cela peut provenir d'où?

Pourriez vous m'aider encore un peu?
En tout cas merci de m'avoir bien fait avancer.
 

frangy

XLDnaute Occasionnel
Bonjour,

Lorsque j'ouvre le fichier celui-ci est long a s'ouvrir cela peut provenir d’où ?
C’était lié à l’effacement des cellules à l’ouverture du classeur.
J’ai modifié le code afin que celui-ci ne se fasse que sur les plages renseignées.

Je voudrais que les lignes 1 des, onglets "ODM" et" tableau demande validation" soit non modifiables.
C’est fait. Les 4 feuilles sont protégées dans les zones non autorisées.

Je voudrais que l'onglet "ODM" et "Tableau demande validation" soient vidés de leur valeur s'il y en des valeurs lorsque qu'on clique sur les boutons macros "MISE EN FORMAT TABLEAU demande de validation plan" ou "mise en forme - Gemini ODM"
J’ai ajouté un bout de code pour l’effacement avant copie des nouvelles données.

Cordialement.
 

Pièces jointes

  • demande validation essai13-3.xlsm
    41.1 KB · Affichages: 5

PETIT YANNICK

XLDnaute Occasionnel
Bonjour Frangy,

Merci pour la retouche du code et le temps passé sur ma problématique.
Le fait de protéger la feuille le message suivant s'affiche, j'avais fait des tests également et j'avais le même message alors que les colonnes a partir de W ne sont pas vérouillé.

2019_09_23_09_15_40_demande_validation_essai13_3_Lecture_seule_Excel.png


Y'a t'il une solution de ne pas avoir ce message si la copie utilisateur est dans la cellule B5 mais tout en laissant les lignes 1 a 4 non modifiable?
Un code VBA pour vérouiller les lignes?

merci
 

frangy

XLDnaute Occasionnel
De mon coté, je ne constate pas le problème.
J'effectue un copier des données (hors en-tête) issues de tmp18, puis un coller en A5.
La procédure de mise en forme s'exécute correctement.

Il faudrait que tu m'expliques comment tu procèdes pour ce copier / coller des données.

Cordialement.
 

PETIT YANNICK

XLDnaute Occasionnel
De mon coté, je ne constate pas le problème.
J'effectue un copier des données (hors en-tête) issues de tmp18, puis un coller en A5.
La procédure de mise en forme s'exécute correctement.

Il faudrait que tu m'expliques comment tu procèdes pour ce copier / coller des données.

Cordialement.


Ca plante, quand je copie les lignes complètes du tableau a traiter et les collent dans le fichier de traitement.
Je viens de tester une autre façon de copier-coller, ( copie juste la zone de données et coller) le fonctionnement est OK.
 

Discussions similaires

Réponses
3
Affichages
377

Statistiques des forums

Discussions
311 725
Messages
2 081 943
Membres
101 849
dernier inscrit
florentMIG