Ne pas faire référence à un nom de zone

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

olive323

XLDnaute Occasionnel
Bonjour à tous,

La zone B4:i107 se nomme J_1. Le texte en gras fait appel à cette zone, je souhaiterais écrire B4:i107 au lieu de J_1, mais quand je le remplace ca ne fonctionne pas.

ex:

p = Application.Match(c, Application.Index([j_1], , 1), 0)
p = Application.Match(c, Application.Index([B4:i107], , 1), 0) changement souhaité qui ne fonctionne pas.

Merci pour votre aide


Sub majlundi()
Dim NomSem As String
NomSem = ActiveSheet.Name
Sheets(NomSem).Activate
Sheets("congés").Select
Application.ScreenUpdating = False
For Each c In [A5:A54]

p = Application.Match(c, Application.Index([j_1], , 1), 0)
If Not IsError(p) Then
Sheets(NomSem).Range("b4:i107").Cells(p, 8).copy
Sheets("congés").Select
c.Offset(0, 2).PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
End If
Next c
Application.ScreenUpdating = True
Sheets(NomSem).Activate
Application.CutCopyMode = False
End Sub
 
Re : Ne pas faire référence à un nom de zone

bonjour,

Ecoute, tu as tout compris🙂§§§
C'est exactement ce qu'il fallait.
Autant ta première réponse me paraissait compréhensible, mais là, je suis dans le flou.
Enfin ça fonctionne😛
Vraiment un grand merci du coup de main...

Bon week

@ bientôt peut être lol
 
Re : Ne pas faire référence à un nom de zone

Bonjour,

un petit problème😱,
Quand je modifie la feuille S1 et que j'active la macro, les anciennes écritures restent dans la feuille congés.
EX: Dans la feuille S1 ,si je supprime les valeurs de B4:I4 et que j'active la macro,
Nous pouvons remarquer que dans la feuille congés, il y a encore RC dans la cellule C5.
J'aimerais si possible intégrer un "Selection.Interior.ColorIndex = xlNone" et "Selection.ClearContents" (ou autre chose)pour effectuer un nettoyage avant de coller les nouvelles données.
Penses tu pouvoir m'arranger ça???



Cordialement
 
Re : Ne pas faire référence à un nom de zone

Bonjour le fil, le forum,

Je n'avais pas encore vu ce fil.

Je comprends qu'on travaille sur la macro du bouton "MAJ congés" de la feuille "S1".

Alors une méthode et une macro nettement plus simples :

Code:
Private Sub CommandButton3_Click() 'MAJ congés
Dim dat As Long, c As Range, r As Range, col As Variant
With Sheets("Congés")
  'RAZ de la semaine
  dat = Application.Max(Rows(1))
  For Each c In .Rows(4).SpecialCells(xlCellTypeFormulas, 1)
    If c >= [B1] And c <= dat Then
      c(2).Resize(65532).ClearContents
      c(2).Resize(65532).Interior.ColorIndex = xlNone
    End If
  Next
  'copie Motif ABS
   For Each c In .Range("A5", .[A65536].End(xlUp))
    Set r = [4:65536].Find(c, , xlValues, xlWhole)
    If Not r Is Nothing Then
      dat = Cells(1, r.Column)
      col = Application.Match(dat, .Rows(4), 0)
      If IsNumeric(col) Then
        c(1, col) = r(1, 8)
        c(1, col).Interior.Color = r(1, 8).Interior.Color
      End If
    End If
  Next
  .Activate 'facultatif
End With
End Sub
J'ai bien vu que dans la feuille "Congés" il y a une MFC modifiant les cellules "AM", "CP"...

Fichier joint.

Edit : j'avais modifié par erreur la RAZ, j'ai corrigé.

A+
 

Pièces jointes

Dernière édition:
Re : Ne pas faire référence à un nom de zone

Re,

La macro précédente fonctionne bien si chaque nom n'existe qu'une seule fois dans la feuille "S1".

Si un nom peut exister sur plusieurs jours utiliser cette macro :

Code:
Private Sub CommandButton3_Click() 'MAJ congés
Dim dat&, c As Range, c1 As Range, r As Range, col As Variant
With Sheets("Congés")
  'RAZ de la semaine
  dat = Application.Max(Rows(1))
  For Each c In .Rows(4).SpecialCells(xlCellTypeFormulas, 1)
    If c >= [B1] And c <= dat Then
      c(2).Resize(65532).ClearContents
      c(2).Resize(65532).Interior.ColorIndex = xlNone
    End If
  Next
  'copie Motif ABS
  For Each c In .Range("A5", .[A65536].End(xlUp))
    For Each c1 In Rows(2).SpecialCells(xlCellTypeConstants, 2)
      Set r = c1(3).Resize(65533).Find(c, , xlValues, xlWhole)
      If Not r Is Nothing Then
        dat = Cells(1, r.Column)
        col = Application.Match(dat, .Rows(4), 0)
        If IsNumeric(col) Then
          c(1, col) = r(1, 8)
          c(1, col).Interior.Color = r(1, 8).Interior.Color
        End If
      End If
    Next
  Next
  .Activate 'facultatif
End With
End Sub
La recherche des noms en feuille "S1" se fait dans les colonnes des cellules renseignées en ligne 2.

Fichier (2).

Edit : j'avais modifié par erreur la RAZ, j'ai corrigé.

A+
 

Pièces jointes

Dernière édition:
Re : Ne pas faire référence à un nom de zone

Re,

Dans les 2 versions j'avais modifié par erreur la RAZ de la semaine, j'ai corrigé les fichiers.

Edit : par ailleurs il faudrait sûrement revoir la numérotation des semaines dans la feuille "Congés".

Et le nom de la feuille "S1" devrait correspondre à la semaine qui s'y trouve.

A+
 
Dernière édition:
Re : Ne pas faire référence à un nom de zone

Bonjour à vous,

A part un grand merci RAS, ça fonctionne impeccable trop fort...

Merci encore du coup main à tous les deux

@ bientôt peut être

Bonne journée

Cordialement
Ps: je mettrai le fichier final sur le site une fois terminé
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

L
Réponses
9
Affichages
1 K
Réponses
13
Affichages
1 K
Réponses
2
Affichages
948
Retour