macro récalcitrante

  • Initiateur de la discussion Initiateur de la discussion cococh
  • 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 !

cococh

XLDnaute Occasionnel
Bonjour a tous, j'ai un problème avec cette macro. Je l'ai repiquée sur un autre fichier car je veux obtenir le mème travail, mais je n'arrive pas à la déchiffrer totalement. Et donc il me manque surement certaines données à completer pour la faire fonctionner ou je veux.

Le role ce cette macro est de fairre ressortir dans un tableau les éléments d'un autre tableau (qui possède un critère numérique) dont une des valeur supperieur ou infférieure à une valeur de base ( ici, c'est 2)

Serait-il possible de la décrire et la déchiffrer plus en détail?

Un grand merci d'avance.

Code:
Sub Extraction()

Sheets("Tableaux").Select

Sheets("Statistiques").Range("E13:H36").ClearContents

Lig = 13

DerLig = [H36].End(xlUp).Row

For L = 2 To DerLig

If Cells(L, 3) >2 Then

Cells(L, 3).EntireRow.Copy Destination:=Sheets("Statistiques").Cells(Lig, 1)

Lig = Lig + 1

End If

Next L

Sheets("Statistiques").Select

End Sub
 
Re : macro récalcitrante

Bonjour cococh,

Quelques explication en rouge se rapportant à la ligne de dessous.

Code:
Sub Extraction()
[COLOR=red]' Selection de la feuille Tableaux[/COLOR]
Sheets("Tableaux").Select

[COLOR=red]' Effacement des données de la plage E13:H36 de la feuille "Statistiques"
[/COLOR]Sheets("Statistiques").Range("E13:H36").ClearContents

Lig = 13 [COLOR=red]'Premier numéro de ligne de destination[/COLOR]

[COLOR=red]'Numéro de la dernière ligne non vide de la colonne H[/COLOR]
DerLig = [H36].End(xlUp).Row  
 
[COLOR=red]'En parant le la ligne 2 jusquà la dernière ligne non vide de la colonne H[/COLOR]
For L = 2 To DerLig

[COLOR=red]'Sil la cellule de la ligne en cours et de la colonne 3 (C) est > à 2[/COLOR]
If Cells(L, 3) >2 Then

[COLOR=red]'copier toute la ligne et la coller dans la feuille Statistiques en ligne 'Lig' et colonne 1
[/COLOR]Cells(L, 3).EntireRow.Copy Destination:=Sheets("Statistiques").Cells(Lig, 1)

[COLOR=red]'Numéro de ligne de destination suivant
[/COLOR]Lig = Lig + 1

End If [COLOR=red]'Fin de condition SI >2
[/COLOR]
Next L [COLOR=red]'Examiner la prochaine ligne[/COLOR]

[COLOR=red]'Selection de la  feuille "Statistiques"
[/COLOR]Sheets("Statistiques").Select

End Sub

En espérant que cela te permettra d'adapter à tes besoins.

A bientôt
 
Re : macro récalcitrante

j'aurais une seconde question: Comment transformer le simple "copier/coller" dans
Code:
Cells(L, 10).EntireRow.Copy Destination:=Sheets("Statistiques").Cells(Lig, 1)
par un copier/collage spécial, valeurs.

Merci d'avance
 
Re : macro récalcitrante

Re:

directement cela n'est pas possible avec la méthode copy Destination:= de l'objet Range

Essaie avec ceci:

Code:
    Cells(L, 3).EntireRow.Copy 
    Sheets("Statistiques").Cells(Lig, 1).PasteSpecial Paste:=xlPasteValues
    Application.CutCopyMode = False

A bientôt
 
- 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
8
Affichages
782
Réponses
2
Affichages
589
Réponses
5
Affichages
688
Réponses
4
Affichages
652
Retour