Se déplacer d'une colonne à une autre à chaque click

1. D'accord Dan, j'ai resseyé mais ca fonctionne pas , peut etre j'ai un souci avec le code sur mon fichier (joint).

En fait vous n'avez pas compris.
En feuille Cumul vous laisser MFR001 et en feuille Limites vous mettez MFRxx

Maintenant dans le code Limite (j'avais omis cela), juste au dessus de la ligne le NEXT i, ajoutez cette ligne --> lglimite = 0

2. vous voulez dire quoi la feuil5 ? la feuille "limites" ?

Oui exact. C'est en fait ce que l'on appel le codeName de la feuille. Vous pouvez le remplacer par Sheets("Limites") si vous voulez

3. Pour la remise à 0 de la ligne

- faite click droite sur le nom de l'onglet Cumul
- choisir l'option Visualiser le code
- Coller le code ci-dessous dans la fenêtre

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Count > 1 Then Exit Sub
If Not Intersect(Target, Range("A4:A" & Range("B" & Rows.Count).End(xlUp).Row)) Is Nothing Then
    If Target.Value = 0 Then Range("C" & Target.Row & ":CY" & Target.Row) = 0
End If
End Sub

Le code réagira lorsqu'il trouvera un zero ou une cellule vide en colonne A

Merci de ne pas reposter votre fichier sans quoi je dois chaque fois modifier le mien.

Bonjour Dan,

le code fonctionne , j'ai testé le MFRxx et ca fonctionne aussi.

J'ai ajouté dans le code Bouton1_Cliquer , "Q" as integer , et Q = Sheets("PG").Range("E4").Value.

l'idée est selon la valeur de Q , il y aura une multiplication de cette valeur devant chaque case de MFR utilisé pour la piece validée.
ou bien chaque case non vide.
donc je defini plage as range et plage = Range(Cells(4, "C"), Cells(Cells(Rows.Count, "CY").End(xlUp).Row, "CY")
Mais ensuite à la miltiplication ca focntionne pas :/

Bonsoir

l'idée est selon la valeur de Q , il y aura une multiplication de cette valeur devant chaque case de MFR utilisé pour la piece validée.ou bien chaque case non vide.

Quand vous dites "devant chaque case MFR", c'est à dire.
La valeur Q est mise dans la colonne Alias de la feuille PG ?

Salut Dan,

les valeurs de MFR dans la feuille Cumul vont dependre de la valeur de Q .

C'est à dire par exemple pour :

image

la valeur de Q est egale à 2 ici.

Donc dans la feuille Cummul et selon la piece S001 fait appel à quels MFR (dans la feuille base) , ici la piece s001 appele MFR001, MFR002 et MFR003

image

alors dans cumul , si on n'utilise pas la valeur de Q qui est 2 , on aura ce calcul :

image

mais si Q intervient alors il y aura multiplication par Q = 2 pour les MFR utilisés et On aura ce tableau pour S001

image

J'espere que j'ai bien decrit la situation.

Merci Dan.

Bonjour,

Parfaitement expliqué.

Il suffit de modifier le code Limite :
- Ajour de 2 lignes (Dim Q et la valeur Q depuis E4 dans la feuille PG)
- Reprise de la valeur Q dans la ligne IF .cells(i,1)

Le code devient ceci :

Sub limite(dlg As Integer, col As Integer, plglimite As Range)
Dim lglimite As Integer, i As Integer
Dim Q As Byte

Q = Sheets("PG").Range("E4").Value
If Q = 0 Then Q = 1

With Sheets("Cumul")

    For i = dlg To 4 Step -1
        On Error Resume Next
        lglimite = plglimite.Find(.Range("B" & i), LookIn:=xlValues, lookat:=xlWhole).Row
        If lglimite = 0 Then MsgBox "La reference MRFxxx n'existe pas en feuille Limites": Exit Sub
        On Error GoTo 0
        If .Cells(i, col) <> "" Then .Cells(i, 1) = WorksheetFunction.Sum(.Range("C" & i & ":CY" & i)) * Q
        lglimite = 0
    Next i

End With
End Sub

J'ai supposé que le nombre Q ne dépassera pas 256 pièces

Merci Dan.
Le code fonctionne , juste une question , pourquoi vous avez modifier le code limite et pas le code Bouton1_Cliquer.

Le code fonctionne , juste une question , pourquoi vous avez modifier le code limite et pas le code Bouton1_Cliquer.

effectivement. Mais je n'y avais pensé et cela parait même plus logique. Si vous voulez le faire voici la procédure :

1. sub Bouton1_Cliquer
- Dans la sub limite, enlevez ces 3 instructions et mettez-les dans la Sub Bouton1_Cliquer entre les lignes dlg = .... et limite dlg....

Dim Q As Byte
Q = Sheets("PG").Range("E4").Value
If Q = 0 Then Q = 1

- Ajouter la variable Q à la ligne Limite ---> limite dlg, col, plglimite, Q
2. Sub Limite
-
Ajoutez Q as byte à la première ligne qui devient ceci :

Sub limite(dlg As Integer, col As Integer, plglimite As Range, Q As Byte)

Cordialement

Merci Dan pour votre reactivite et votre aide.

Rechercher des sujets similaires à "deplacer colonne chaque click"