Modification code VBA

Bonjour,

Je souhaite transformer ce code de façon à ce que l’onglet TEMP_VREF soit supprimé et que sa colonne D intègre l’onglet VREF en colonne D (colonne D de VREF décalée en E). Je bloque un peu…

Voici le fichier si ça peut aider.
Test.xlsm (2,7 Mo)

Sub Make_Temp_VRF()
Dim WSvref As Worksheet, WStmp As Worksheet
Dim RangeVREF As Range, RangeTMP As Range

Set WSvref = ThisWorkbook.Worksheets(« VREF »)
Set WStmp = ThisWorkbook.Worksheets(« TEMP_VREF »)

WStmp.Range(« A2:D2000 »).ClearContents

Set RangeVREF = WSvref.Range(« A2:D » & WSvref.Range(« A1000 »).End(xlUp).Row)
Set RangeTMP = WStmp.Range(« A2 »).Resize(RangeVREF.Rows.Count, RangeVREF.Columns.Count)

RangeTMP.Value = RangeVREF.Value
End Sub

Sub Speed_Comparator()
Dim WSvref As Worksheet, WStmp As Worksheet
Dim RangeVREF As Range, RangeTMP As Range
Dim CellVREF As Range, CellTMP As Range
Dim TheTimer As Single
Dim x As Integer, y As Integer

TheTimer = Timer

Set WSvref = ThisWorkbook.Worksheets(« VREF »)
Set WStmp = ThisWorkbook.Worksheets(« TEMP_VREF »)

WSvref.Range(« D:D »).Interior.ColorIndex = xlNone

Set RangeVREF = WSvref.Range(« A2:A » & WSvref.Range(« A1000 »).End(xlUp).Row)
Set RangeTMP = WStmp.Range(« A2:A » & WStmp.Range(« A1000 »).End(xlUp).Row)

For Each CellVREF In RangeVREF
For Each CellTMP In RangeTMP
If CellVREF.Text = CellTMP.Text Then
With CellVREF.Offset(0, 3)
If .Value < CellTMP.Offset(0, 3).Value Then
.Value = CellTMP.Offset(0, 3).Value
.Interior.ColorIndex = 33
y = y + 1
Exit For
Else
If .Value > CellVREF.Offset(0, 2) Then
.Interior.ColorIndex = 4
Exit For
Else
.Interior.ColorIndex = xlNone
Exit For
End If
End If
End With
End If
Next CellTMP
x = x + 1
Next CellVREF

MsgBox x & " Comparaisons ont ?t? faites en " & Timer - TheTimer & " Secondes" & vbCrLf _
& y & " plus grande(s) vitesse(s) historique(s) retrouv?e(s)", vbInformation

End Sub

Je vous remercie pour votre aide.

Bonjour

Ton fichier ci-joint avec ton code « Make_Temp_VRF » adapté

Je n’ai rien rajouté pour ce besoin :

« TEMP_VREF soit supprimé »

L’onglet doit il disparaitre ou juste être nettoyé de toutes ses données ?

Car tu as mis déjà dans cet esprit cette ligne code qui le nettoie mais ne le supprime pas :

WStmp.Range(« A2:D2000 »).ClearContents

Donc j’ai supposé que c’était juste un nettoyage à réaliser et que cette ligne faisait l’affaire

A toi de me dire

Ton fichier avec les autres évolutions

Test.xlsm (2,7 Mo)

Bonjour,

Merci pour votre retour. En fait je souhaite supprimer l’onglet TEMP_REF. Les colonnes A,B,C sont identiques à l’onglet VREF. Seule la colonne D varie (macro d’un autre onglet mais trop lourd donc je ne l’ai pas mis dans le fichier).

J’aimerai donc que cette colonne D vienne dans l’onglet VREF en colonne D. La colonne D de VREF décalée en E.

ça me permettrait d’avoir plus de visibilité sur un seul onglet et de gagner un onglet.

Je ne sais pas si c’est possible.

Cordialement,

Ton fichier ci-joint avec toutes les évolutions souhaitées macro « Make_Temp_VRF »

Testes et dis moi
Test.xlsm (2,7 Mo)

Bonsoir,

Merci pour ton retour.
Ce n’est pas possible de ne plus voir apparaître du tout TEMP_VREF de la macro ?
L’idée n’est pas de générer une nouvelle macro mais juste mettre la colonne dans VREF…

Mais alors c est une manipulation à ne réaliser qu une seule fois ?

La colonne resterait dans l’onglet VREF, seules les valeurs seront modifiées selon l’extraction.

Que doit on inclure dans la macro dans toutes les opérations décrites qui seront à reeffectuer à chacune de ses exécutions ?

Je souhaite la même macro qui alimente la colonne D dans TEMP_REF mais en D4 onglet VREF.

Je reprends tes propos initiaux :

« Je souhaite transformer ce code de façon à ce que l’onglet TEMP_VREF soit supprimé et que sa colonne D intègre l’onglet VREF en colonne D (colonne D de VREF décalée en E). »

3 opération’s décrites qui doivent intégrer la macro

Opération 1

colonne D de VREF décalée en E

Opération 2

que l’onglet TEMP_VREF soit supprimé et que sa colonne D intègre l’onglet VREF en colonne D

Plus précisément que la colonne D onglet « TEMP_VREF » intègre l onglet VREF en colonne D

Opération 3

que l’onglet TEMP_VREF soit supprimé

Ces 3 opérations sont implantés dans la macro « Make_Temp_VRF » et fonctionnent

Bien que répondant exactement à tes souhaits initiaux décrit dans tes propos cela ne semble pas te satisfaire

Donnes moi de manière précise parmis les opérations listees ci-dessus celles qui doivent être maintenu que cette macro doit effectuer â chacune de ses exécutions

Dans l attente de te lire

Les trois opérations sont exactes.
Je ne pensais pas qu’il fasse passer par une macro pour exécuter les 3 opérations car au final ce n’est pas juste de la mise en page ? Il faut juste modifier dans le code la destination des valeurs (VREF et non TEMP_VREF) et c’est cela qui me bloque.

La macro est lancée tous les jours car les valeurs varient en fonction de l’extraction. Une fois que l’onglet TEMP_VREF est supprimé la macro beug du coup puisque VREF apparaît encore dans le corps de la macro.

« Je ne pensais pas qu’il fasse passer par une macro pour exécuter les 3 opérations »

Donc je supprime de la macro ces 3 opérations

Tu confirmes ?

Oui, car après la colonne D sera toujours en VREF.
Par contre la macro qui concerne le copier coller de la plus grande valeur (en lien avec extract_intraprint) il faut conserver.

Je te répond dans cet esprit au plus tard demain

Bonjour

« Par contre la macro qui concerne le copier coller de la plus grande valeur (en lien avec extract_intraprint) il faut conserver. »

C’est à dire ? quelle macro ?

Attention après avoir réalisé une seule fois les 3 opérations décrites et notamment l’opération de suppression de l’onglet « TEMP_VREF » les macros « Speed_Comparator » et « Make_Temp_VRF » ne peuvent plus fonctionner car elles font appellent à cet onglet
La macro « Speed_Comparator » est en lien avec le bouton « Etape 2 : comparer les nouvelles vitesses avec la nouvelle vitesse théorique »

Est ce un inconvénient doit on maintenir ce bouton et ces macros devenu inopérantes ?

Merci de me dire

Bonjour,
En fait j’aimerai supprimer la macro qui rempli l’onglet TEMP_VREF et le supprimer pour gagner une étape.
La colonne D de l’onglet VREF viendrait directement comparer la valeur par rapport à l’extraction intraprint et non plus avec TEMP_VREF ce qui permet de gagner une étape.

Bonjour

En fait j’aimerai supprimer la macro qui rempli l’onglet TEMP_VREF et le supprimer pour gagner une étape.

Je n’ai pas de macro qui effectue cette tâche

Qu’elle est action que tu réalises qui conduit a cela ?

« et le supprimer pour gagner une étape. »

C’est ce que j’ai fait mais le bouton « Etape 2 : comparer les nouvelles vitesses avec la nouvelle vitesse théorique » ne fonctionne plus (l’onglet supprimé était utilisé)

Il me manque des précisions sur le déroulement de toutes les opérations afin de comprendre ce que tu recherches à avoir en rapport à ce que tu faisais

Difficile pour moi d’aller plus loin

N’y a t’il pas d’autre fichiers qui interviennent dans lesquels des procédures sont utilisées ?

Merci de me détailler tout le contexte avec ce seul fichier ta demande est difficilement compréhensible

Bonjour,

Je reformule mon besoin de façon plus compréhensible. J’ai supprimé l’onglet TEMP_VREF car je souhaite faire le plus simmple possible. Voilà ce que j’obtiens. Classeur1.xlsx (21,8 Ko)

mon module 2 permet de copier les valeurs les plus hautes de l’onglet Extraction_Intraprint (colonne AC) en fonction du numéro de XFR en colonne D de l’onglet VREF.

Module 2 :

Sub maj_vitesses()
Dim Derlg&
Application.EnableEvents = False
Derlg = Feuil5.Cells(Feuil5.Rows.Count, « S »).End(xlUp).Row
[D2].FormulaArray = « =max(c2,max(if(Extraction_Intraprint!$s$2:$s » & Derlg & « =a2,Extraction_Intraprint!$ac$2:$ac » & Derlg & « ,))) »
Derlg = Cells(Rows.Count, « A »).End(xlUp).Row
[D2].AutoFill Range(« D2:D » & Derlg)
Range(« D2:D » & Derlg).Value = Range(« D2:D » & Derlg).Value
Application.EnableEvents = True

J’aimerai y ajouter plusieurs éléments :

  • Une macro qui dit que si la valeur de la colonne D change (car vitesse réelle de Extraction_Intraprint a une nouvelle valeur la plus haute) = code déjà existant en module 2, je veux que la cellule changée se colore en bleue.
  • Une macro qui dit que si on coche les cellules de la colonne E (X) alors les cellules de la colonne D deviennent vertes (passent de bleu à vert)
    -Une macro qui dit que si la colonne D devient bleue (dernière vitesse max dépassée) alors on enlève la croix en colonne E (passe de vert à bleu en D)
    -Une macro qui annonce via un msgbox le nombre de nouvelles valeurs (bleues). J’ai commencé à écrire le code.

Bien cordialement,

Ce sujet a été automatiquement fermé après 30 jours. Aucune réponse n’est permise dorénavant.