XL 2010 MODIFIER MACRO

mcj1997

XLDnaute Accro
Bonjour,

Voici une ligne d'une macro que je souhaite modifier afin de sélectionner des cellules sans qu'elle se suivent toutes :

Set plage = [B4].Resize(derligne - 3, 1)

J'aimerai remplacer par
Set plage = B4 à B8 et B10 à B12 et B14 à B16 et B18 à B22 et enfin B24 à B27

Merci d'avance,
 

Jacky67

XLDnaute Barbatruc
Bonjour,

Voici une ligne d'une macro que je souhaite modifier afin de sélectionner des cellules sans qu'elle se suivent toutes :

Set plage = [B4].Resize(derligne - 3, 1)

J'aimerai remplacer par
Set plage = B4 à B8 et B10 à B12 et B14 à B16 et B18 à B22 et enfin B24 à B27

Merci d'avance,
Bonjour,
Sans plus d'infos, je dirais

VB:
Set Plage = Range("B4:B8,B10:B12,B14:B16,B18:B22,B24:B27")
'Suite éventuelle
Plage.Interior.ColorIndex = 3
 
Dernière édition:

mcj1997

XLDnaute Accro
Bonjour,

Merci cela fonctionne,

Voici la macro complète qui me permet changer de fichier source suivant le mois indiqué en B3 et C3. Mes fichiers sources vont de janvier à décembre ainsi en sélectionnant le mois cela va chercher les informations dans le mois voulu. Toutefois, lorsque je change le mois en B3 ou C3, cela me demande de valider le fichier à ouvrir autant de fois que j'ai de formules. Ne serait pas possible dans la macro d'avoir un code qui forcerait à faire qu'une fois la validation du fichier ?


Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Target.Address = "$B$3" Then
derligne = Cells(Rows.Count, 1).End(xlUp).Row
Set plage = Range("B4:B8,B10:B12,B14:B16,B18:B22,B24:B27")
If Target = "" Then plage.Value = "": Exit Sub
If [A1] = "" Then MsgBox "Renseigner A1": plage.Value = "": Exit Sub
chemin = "C:\Users\Jacky\Desktop\PROD MOIS\"
Application.EnableEvents = False
plage.FormulaLocal = "=INDEX('" & chemin & "[" & [B3] & ".xlsx]Objectifs'!$A$1:$GR$290;EQUIV(A4;'" & chemin & "[" & [B3] & ".xlsx]Objectifs'!$A:$A;0);EQUIV(B$1 ; '" & chemin & "[" & [B3] & ".xlsx]Objectifs'!$1:$1;0))"
Application.EnableEvents = True
End If
If Target.Count > 1 Then Exit Sub
If Target.Address = "$C$3" Then
derligne = Cells(Rows.Count, 1).End(xlUp).Row
Set plage = Range("C4:C8,C10:C12,C14:C16,C18:C22,C24:C27")
If Target = "" Then plage.Value = "": Exit Sub
If [A1] = "" Then MsgBox "Renseigner A1": plage.Value = "": Exit Sub
chemin = "C:\Users\Jacky\Desktop\PROD MOIS\"
Application.EnableEvents = False
plage.FormulaLocal = "=INDEX('" & chemin & "[" & [C3] & ".xlsx]Objectifs'!$A$1:$GR$290;EQUIV(A4;'" & chemin & "[" & [C3] & ".xlsx]Objectifs'!$A:$A;0);EQUIV(B$1 ; '" & chemin & "[" & [B3] & ".xlsx]Objectifs'!$1:$1;0))"
Application.EnableEvents = True
End If

End Sub
 

Jacky67

XLDnaute Barbatruc
Bonjour,

Merci cela fonctionne,

Voici la macro complète qui me permet changer de fichier source suivant le mois indiqué en B3 et C3. Mes fichiers sources vont de janvier à décembre ainsi en sélectionnant le mois cela va chercher les informations dans le mois voulu. Toutefois, lorsque je change le mois en B3 ou C3, cela me demande de valider le fichier à ouvrir autant de fois que j'ai de formules. Ne serait pas possible dans la macro d'avoir un code qui forcerait à faire qu'une fois la validation du fichier ?


Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Target.Address = "$B$3" Then
derligne = Cells(Rows.Count, 1).End(xlUp).Row
Set plage = Range("B4:B8,B10:B12,B14:B16,B18:B22,B24:B27")
If Target = "" Then plage.Value = "": Exit Sub
If [A1] = "" Then MsgBox "Renseigner A1": plage.Value = "": Exit Sub
chemin = "C:\Users\Jacky\Desktop\PROD MOIS\"
Application.EnableEvents = False
plage.FormulaLocal = "=INDEX('" & chemin & "[" & [B3] & ".xlsx]Objectifs'!$A$1:$GR$290;EQUIV(A4;'" & chemin & "[" & [B3] & ".xlsx]Objectifs'!$A:$A;0);EQUIV(B$1 ; '" & chemin & "[" & [B3] & ".xlsx]Objectifs'!$1:$1;0))"
Application.EnableEvents = True
End If
If Target.Count > 1 Then Exit Sub
If Target.Address = "$C$3" Then
derligne = Cells(Rows.Count, 1).End(xlUp).Row
Set plage = Range("C4:C8,C10:C12,C14:C16,C18:C22,C24:C27")
If Target = "" Then plage.Value = "": Exit Sub
If [A1] = "" Then MsgBox "Renseigner A1": plage.Value = "": Exit Sub
chemin = "C:\Users\Jacky\Desktop\PROD MOIS\"
Application.EnableEvents = False
plage.FormulaLocal = "=INDEX('" & chemin & "[" & [C3] & ".xlsx]Objectifs'!$A$1:$GR$290;EQUIV(A4;'" & chemin & "[" & [C3] & ".xlsx]Objectifs'!$A:$A;0);EQUIV(B$1 ; '" & chemin & "[" & [B3] & ".xlsx]Objectifs'!$1:$1;0))"
Application.EnableEvents = True
End If

End Sub
Re..
Attention il y a une erreur dans cette formule
plage.FormulaLocal = "=INDEX('" & chemin & "[" & [C3] & ".xlsx]Objectifs'!$A$1:$GR$290;EQUIV(A4;'" & chemin & "[" & [C3] & ".xlsx]Objectifs'!$A:$A;0);EQUIV(B$1 ; '" & chemin & "[" & [B3] & ".xlsx]Objectifs'!$1:$1;0))"
'--------------------------------------------------------
Si j'ai bien compris , le nom du classeur est respectivement en cellule B3 ,C3
A tester
Mettre le nom du classeur avec l'estension en B3
Et supprimer l'extension dans la formule
Pour B3
plage.FormulaLocal = "=INDEX('" & chemin & "[" & [b3] & "]Objectifs'!$A$1:$GR$290;EQUIV(A4;'" & chemin & "[" & [b3] & "]Objectifs'!$A:$A;0);EQUIV(B$1 ; '" & chemin & "[" & [b3] & "]Objectifs'!$1:$1;0))"
 

mcj1997

XLDnaute Accro
Le nom du classeur en b3 n’est pas le même qu’en c3, c’est l’intérêt du fichier car ainsi je peux comparer des productions d’un mois sur l’autre. J’ai mis la liste des mois en b3 et c3 et ainsi je compare les mois que je veux.

je comprends l’erreur dont vous parlez ?
 

Jacky67

XLDnaute Barbatruc
Le nom du classeur en b3 n’est pas le même qu’en c3, c’est l’intérêt du fichier car ainsi je peux comparer des productions d’un mois sur l’autre. J’ai mis la liste des mois en b3 et c3 et ainsi je compare les mois que je veux.

je comprends l’erreur dont vous parlez ?
Re...
Oui, c'est bien comme cela que je l'ai interprété.
Pour l'erreur,
Je l'ai mis en rouge [B3] ca devrait être [C3] non ?
 

mcj1997

XLDnaute Accro
Bonjour,

Je viens de simplifier la macro des lignes ne servaient plus mais j'ai toujours à valider plusieurs fois lorsque je change de mois en B3 ou C3 ?

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Target.Address = "$B$3" Then
Set plage = Range("B4:B8,B10:B12,B14:B16,B18:B22,B24:B27")
plage.FormulaLocal = "=INDEX('" & chemin & "[" & [B3] & ".xlsx]Objectifs'!$A$1:$GR$290;EQUIV(A4;'" & chemin & "[" & [B3] & ".xlsx]Objectifs'!$A:$A;0);EQUIV(B$1 ; '" & chemin & "[" & [B3] & ".xlsx]Objectifs'!$1:$1;0))"
Application.EnableEvents = True
End If
If Target.Count > 1 Then Exit Sub
If Target.Address = "$C$3" Then
Set plage = Range("C4:C8,C10:C12,C14:C16,C18:C22,C24:C27")
Application.EnableEvents = False
plage.FormulaLocal = "=INDEX('" & chemin & "[" & [C3] & ".xlsx]Objectifs'!$A$1:$GR$290;EQUIV(A4;'" & chemin & "[" & [C3] & ".xlsx]Objectifs'!$A:$A;0);EQUIV(B$1 ; '" & chemin & "[" & [B3] & ".xlsx]Objectifs'!$1:$1;0))"
Application.EnableEvents = True
End If

End Sub
 

Jacky67

XLDnaute Barbatruc
Bonjour,

Je viens de simplifier la macro des lignes ne servaient plus mais j'ai toujours à valider plusieurs fois lorsque je change de mois en B3 ou C3 ?

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Target.Address = "$B$3" Then
Set plage = Range("B4:B8,B10:B12,B14:B16,B18:B22,B24:B27")
plage.FormulaLocal = "=INDEX('" & chemin & "[" & [B3] & ".xlsx]Objectifs'!$A$1:$GR$290;EQUIV(A4;'" & chemin & "[" & [B3] & ".xlsx]Objectifs'!$A:$A;0);EQUIV(B$1 ; '" & chemin & "[" & [B3] & ".xlsx]Objectifs'!$1:$1;0))"
Application.EnableEvents = True
End If
If Target.Count > 1 Then Exit Sub
If Target.Address = "$C$3" Then
Set plage = Range("C4:C8,C10:C12,C14:C16,C18:C22,C24:C27")
Application.EnableEvents = False
plage.FormulaLocal = "=INDEX('" & chemin & "[" & [C3] & ".xlsx]Objectifs'!$A$1:$GR$290;EQUIV(A4;'" & chemin & "[" & [C3] & ".xlsx]Objectifs'!$A:$A;0);EQUIV(B$1 ; '" & chemin & "[" & [B3] & ".xlsx]Objectifs'!$1:$1;0))"
Application.EnableEvents = True
End If

End Sub
Re...
Dans cette macro, il n'y a aucune définition pour la variable "Chemin"
Et l'erreur [B3] est toujours présente.
Il manque "Application.EnableEvents = False" en premier partie

Ceci fonctionne chez moi sans problème et ne demande aucune validation
Il est évident que les classeurs spécifiés en B3 et C3 doivent exister dans le répertoire "Chemin"
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Plage, Chemin As String
    If Target.Count > 1 Then Exit Sub
    Chemin = "D:\mes documents\toto\"  ' ******* Adapter le chemin réel *******
    Application.EnableEvents = False
    If Target.Address = "$B$3" Then
        Set Plage = Range("B4:B8,B10:B12,B14:B16,B18:B22,B24:B27")
        Plage.FormulaLocal = "=INDEX('" & Chemin & "[" & [b3] & "]Objectifs'!$A$1:$GR$290;EQUIV(A4;'" & Chemin & "[" & [b3] & "]Objectifs'!$A:$A;0);EQUIV(B$1 ; '" & Chemin & "[" & [b3] & "]Objectifs'!$1:$1;0))"
    End If
    If Target.Address = "$C$3" Then
        Set Plage = Range("C4:C8,C10:C12,C14:C16,C18:C22,C24:C27")
        Plage.FormulaLocal = "=INDEX('" & Chemin & "[" & [C3] & "]Objectifs'!$A$1:$GR$290;EQUIV(A4;'" & Chemin & "[" & [C3] & "]Objectifs'!$A:$A;0);EQUIV(B$1 ; '" & Chemin & "[" & [C3] & "]Objectifs'!$1:$1;0))"
    End If
    Application.EnableEvents = True
End Sub
 
Dernière édition:

mcj1997

XLDnaute Accro
voici ce que j'ai laissé car je n'ai plus de condition dans A1, lorsque je change de mois cela me demande de mettre à jour en ouvrant le fichier dossier, je dois faire annuler plusieurs fois et cela prend bien le bon mois.




Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$B$3" Then
Set plage = Range("B4:B8,B10:B12,B14:B16,B18:B22,B24:B27")
plage.FormulaLocal = "=INDEX('" & chemin & "[" & [B3] & ".xlsx]Objectifs'!$A$1:$GR$290;EQUIV(A4;'" & chemin & "[" & [B3] & ".xlsx]Objectifs'!$A:$A;0);EQUIV(B$1 ; '" & chemin & "[" & [B3] & ".xlsx]Objectifs'!$1:$1;0))"
End If
If Target.Address = "$C$3" Then
Set plage = Range("C4:C8,C10:C12,C14:C16,C18:C22,C24:C27")
plage.FormulaLocal = "=INDEX('" & chemin & "[" & [C3] & ".xlsx]Objectifs'!$A$1:$GR$290;EQUIV(A4;'" & chemin & "[" & [C3] & ".xlsx]Objectifs'!$A:$A;0);EQUIV(B$1 ; '" & chemin & "[" & [B3] & ".xlsx]Objectifs'!$1:$1;0))"

End If

End Sub
 

Jacky67

XLDnaute Barbatruc
voici ce que j'ai laissé car je n'ai plus de condition dans A1, lorsque je change de mois cela me demande de mettre à jour en ouvrant le fichier dossier, je dois faire annuler plusieurs fois et cela prend bien le bon mois.




Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$B$3" Then
Set plage = Range("B4:B8,B10:B12,B14:B16,B18:B22,B24:B27")
plage.FormulaLocal = "=INDEX('" & chemin & "[" & [B3] & ".xlsx]Objectifs'!$A$1:$GR$290;EQUIV(A4;'" & chemin & "[" & [B3] & ".xlsx]Objectifs'!$A:$A;0);EQUIV(B$1 ; '" & chemin & "[" & [B3] & ".xlsx]Objectifs'!$1:$1;0))"
End If
If Target.Address = "$C$3" Then
Set plage = Range("C4:C8,C10:C12,C14:C16,C18:C22,C24:C27")
plage.FormulaLocal = "=INDEX('" & chemin & "[" & [C3] & ".xlsx]Objectifs'!$A$1:$GR$290;EQUIV(A4;'" & chemin & "[" & [C3] & ".xlsx]Objectifs'!$A:$A;0);EQUIV(B$1 ; '" & chemin & "[" & [B3] & ".xlsx]Objectifs'!$1:$1;0))"

End If

End Sub
J'ai l'impression de proposer des codes et des modifications d'erreurs dans le vide.
Aussi, je mets fin de mon intervention dans ce fil.
 

mcj1997

XLDnaute Accro
J'ai recopié exactement ce que vous aviez mis poste #9 et cela fonctionne parfaitement le changement de mois entraine directement la mise à jour sans faire quoi que ce soit !

Merci beaucoup et désolé pour le désagrément !

Cordialement,
 

Discussions similaires

Statistiques des forums

Discussions
312 176
Messages
2 085 961
Membres
103 066
dernier inscrit
bobfils