Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Microsoft 365 Problème, ma macro change la plage de cellule dans une autre feuille

  • Initiateur de la discussion Initiateur de la discussion akira21
  • Date de début Date de début

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 !

akira21

XLDnaute Occasionnel
Bonjour,

J'ai un problème, quand j'utilise une macro pour actualiser un tableau dans une feuille "Cockpit", la plage dans ma formule de ma feuille B change...
Celle ci diminue, elle passe de 1500 à 1200 par exemple.
Savez vous comment résoudre le problème ?
Est ce normal d'avoir le lien du fichier avant la macro quand je veux l'affecter ?
VB:
'Cockpit OTC GQ derniere version.xls'!Copie

VB:
=SOMMEPROD(($A5<>$A4)*(Cockpit!$Q$7:$Q$1500=0)*(Cockpit!$H$7:$H$1500=$A5)*Cockpit!$J$7:$J$1500)

Code:
Sub Copie()

'Copie
Application.ScreenUpdating = False
Sheets("Copie Formule").Select
    Range("A7:R1500").Select
    Selection.Copy
    Sheets("Cockpit").Select
    Range("A7").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Paste:=xlPasteFormats
   
   
'Converti colonne E, G, H, Q, R en nombre

Range("E7:E1500").Select
    Selection.TextToColumns , FieldInfo:=Array(1, 1)

Range("G7:G1500").Select
    Selection.TextToColumns , FieldInfo:=Array(1, 1)

Range("H7:H1500").Select
    Selection.TextToColumns , FieldInfo:=Array(1, 1)

Range("Q7:Q1500").Select
    Selection.TextToColumns , FieldInfo:=Array(1, 1)

Range("R7:R1500").Select
    Selection.TextToColumns , FieldInfo:=Array(1, 1)
   

ActiveSheet.UsedRange.Columns(2).EntireColumn.Insert 'insère une colonne auxiliaire
    DL = Sheets("Cockpit").Range("F65500").End(xlUp).Row
    With ActiveSheet.Range("B7:B" & DL)
            .FormulaR1C1 = "=IF(COUNTIF(Liste!C,Cockpit!RC[4])>0,1,"""")"
            .Value = .Value 'supprime les formules
            .EntireRow.Sort .Cells, xlDescending  'tri pour regrouper et accélérer
            On Error Resume Next 'si aucune SpecialCell
            .SpecialCells(xlCellTypeConstants, 1).EntireRow.Delete
            .EntireColumn.Delete 'supprime la colonne auxiliaire
    End With
With ActiveSheet.UsedRange: End With 'actualise les barres de défilement
 
'Sélectionne la cellule A1

Range("A1").Select


   
End Sub
 
Bonjour,

Sans voir le fichier, difficile de répondre avec certitude, mais en regardant votre code, il me semble bien que vous supprimiez les lignes dont la cellule en colonne en B est vide. Si parmi les 1500 lignes, il y a 300 cellules vides dans la colonne B, ces dernières seront bien supprimées, d'où les 1200 lignes restantes.

Cdlt
 
Bonjour,

selon les opérations faites auparavant, il arrive que la feuille active ne le soit pas réellement.
Tu peux te passer de l'activation de l'autre feuille.
Remplace :
VB:
'    Sheets("Copie Formule").Select
'    Range("A7:R1500").Select
'    Selection.Copy
'    Sheets("Cockpit").Select
'    Sheets("Cockpit").Select
'    Range("A7").Select
'    Selection.PasteSpecial Paste:=xlPasteValues, Paste:=xlPasteFormats
par :
Code:
    Sheets("Copie Formule").Range("A7:R1500").Copy
    Sheets("Cockpit").Range("A7").PasteSpecial Paste:=xlPasteValues
    Sheets("Cockpit").Range("A7").PasteSpecial Paste:=xlPasteFormats
Démarre avec Sheets("Cockpit") active
Pas sûr que cela suffise si d'autres opérations du même style ont eut lieu avant. Elimine tous les .Select inutiles, qui ralentissent fortement en plus.
eric
 
Dernière édition:
J'ai remplacé mais le résultat et le même.
Ce qui est étonnant, c'est que la plage de ma formule qui est dans une autre feuille soit changer quand j'utilise cette macro dans une autre feuille 🙁
Ca ne me le faisait pas au début :/
Maintenant, à chaque fois que j'utilise cette macro, cela me diminue la plage de ma formule qui est dans une autre feuille et qui n'a pas de lien avec la macro. Cela jusqu'à arriver à ça :
VB:
=SOMMEPROD(($A5<>$A4)*(Cockpit!#REF!=0)*(Cockpit!#REF!=$A5)*Cockpit!#REF!)

Plus de plage !!!
 
Dernière édition:
- 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

Réponses
5
Affichages
379
Réponses
22
Affichages
3 K
Réponses
1
Affichages
782
  • Question Question
Microsoft 365 colorer une plage
Réponses
2
Affichages
827
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…