Aide pour modification de codes VBA

melba

XLDnaute Occasionnel
Bonjour,

Je ne connais pas la programmation et après avoir vainement essayé de compléter 2 codes VBA qui m'ont été donnés sur ce forum je ne vois pas d'autre solution que de faire encore appel à vous.

1) Je souhaiterais compléter le code suivant :

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
If Intersect(Target, Range("d7:d17")) Is Nothing Or Target.Count > 1 Then Exit Sub
Cancel = True
Range("E" & Target.Row) = Range("E" & Target.Row) - Target
Target = ""
End Sub

pour indiquer que sont aussi concernées :

les cellules h7:h17 et colonne I

les cellules L7:L17 et colonne M

Dans mon fichier réel j'aurai d'autres plages mais la configuration sera la même.


2) je souhaiterais compléter le code suivant :

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("d7:d17")) Is Nothing Or Target.Count > 1 Then Exit Sub
Range("E" & Target.Row) = Range("E" & Target.Row) + Target
End Sub

pour indiquer que sont les mêmes zones que mentionnées plus haut sont concernées.

Comme plus haut, dans mon fichier réel j'aurai d'autres plages mais la configuration sera la même.

Je joins un fichier exemple.

Y-a-t-il quelqu'un pour m'aider?

Merci par avance
 

Pièces jointes

  • Répartition cadeaux2.xlsm
    27.2 KB · Affichages: 35
  • Répartition cadeaux2.xlsm
    27.2 KB · Affichages: 35
  • Répartition cadeaux2.xlsm
    27.2 KB · Affichages: 34

melba

XLDnaute Occasionnel
Re : Aide pour modification de codes VBA

Bonjour,

Je reviens vers vous car cela fais maintenant quelques heures que j'essaye d'intégrer le code de Si dans mon vrai fichier mais en vain.

Là je jette l'éponge et vous soumets mon fichier. J'ai ajouté des colonnes mais même sans ça ne fonctionne pas.

A l'aide !!!!
 

Pièces jointes

  • Test incrémentation et annuler.xlsm
    33.6 KB · Affichages: 25

Si...

XLDnaute Barbatruc
Re : Aide pour modification de codes VBA

salut

Tu as bien fait ne ne pas protéger tes codes. J’ai pu voir qu'il manque un module standard avec la déclaration
Public pl As Range
Là, quand elle est initialisée à l’ouverture du Classeur, elle garde sa valeur dans toutes les macros tant qu’elle n’est pas redéfinie .

Public.jpg

Si… tu multilpies le nombre de colonnes, autant passer par une boucle supplémentaire.
Dans ThisWorbook, remplace la macro par celle-ci
Code:
Private Sub Workbook_Open()
  Feuil1.Activate
  Set pl = Range("A10")
  For l = 7 To 194 Step 17
    For c = 4 To 29 Step 4 ‘toutes les 4 colonnes à partir de la D
    Set pl = Application.Union(pl, Range(Cells(l, c), Cells(l + 10, c)))
    Next
  Next
End Sub
L'initialisation de fera au lancement de cette macro (click sur F5)ou après sauvegarde du classeur à sa réouverture.
 

melba

XLDnaute Occasionnel
Re : Aide pour modification de codes VBA

Bonsoir,

J'ai donc insérer un module et ai collé :

Public pl As Range ( sans rien comprendre je l'avoue).


Puis j'ai changé l'ancien code dans Thisworkbook et ai mis :

Private Sub Workbook_Open()
Feuil1.Activate
Set pl = Range("A10")
For l = 7 To 194 Step 17
For c = 4 To 29 Step 4 ‘toutes les 4 colonnes à partir de la D
Set pl = Application.Union(pl, Range(Cells(l, c), Cells(l + 10, c)))
Next
Next
End Sub

J'ai erreur de syntaxe et cette ligne apparaît en rouge :

For c = 4 To 29 Step 4 ‘toutes les 4 colonnes à partir de la D

Merci pour votre analyse
 

melba

XLDnaute Occasionnel
Re : Aide pour modification de codes VBA

Bonjour,

J'ai fait comme tu as dis mais maintenant dans le code :

Private Sub Worksheet_Change(ByVal R As Range)
If Not Intersect(R, pl) Is Nothing Then
If IsNumeric(R) Then
R(1, 2) = R(1, 2) + R
Else
Application.EnableEvents = False: R = "": R.Select: Application.EnableEvents = True
End If
End If
End Sub

j'ai If Not Intersect(R, pl) Is Nothing Then surligné en jaune.

Merci pour votre persévérance.

]+
 

Discussions similaires

Statistiques des forums

Discussions
312 502
Messages
2 089 047
Membres
104 011
dernier inscrit
dfr