Première MACRO... HELP

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

will21

XLDnaute Nouveau
Je viens d'essayer ma première macro.


Sub NOVEMBRE()
For Each cell In
Sheets("ANNUEL").Range("S24 :S9010").End(xlUp).Row)
If cell.Value<> "11" Then
Sheets("ANNUEL").Range("A" & cell.Row & ":R" & cell.Row).Copy _
Sheets("NOVEMBRE").Range("A" & Sheets("NOVEMBRE").Range("A65536").End(xlUp).Row + 1)
End If
Next
End Sub

Le but de cette macro était:
Sur la feuille "ANNUEL" si dans les colonnes S24 à S90210 on trouve la valeur 11,
Alors copier la ligne de la colonne A à R dans la feuille NOVEMBRE, à la dernière ligne vide.

Quelqu'un peut'il m'indiquer où j'ai fauté???

Merci d'avance
 
Re : Première MACRO... HELP

Bonjour Will,

Une proposition :
VB:
Option Explicit

Sub NOVEMBRE()
Dim wA As Worksheet, wN As Worksheet, i As Long, r As Long, c As Long

    Set wA = Worksheets("ANNUEL"): Set wN = Worksheets("NOVEMBRE")
    r = wN.Cells(Rows.Count, 1).End(xlUp).Row
    For i = 24 To 9010
        If wA.Cells(i, 19) = 11 Then
            r = r + 1
            wA.Range(wA.Cells(i, 1), wA.Cells(i, 18)).Copy Destination:=wN.Cells(r, 1)
        End If
    Next i
    
End Sub

Pour les commentaires, sans tester :

For Each cell In Sheets("ANNUEL").Range("S24 :S9010").End(xlUp).Row)
- Il y a une parenthèse incongrue la fin
- Sheets("ANNUEL").Range("S24 :S9010").End(xlUp).Row donne le n° de la 1ere cellule non vide au dessus de la cellule S24 doonc la ligne n'a aucun sens (= 'pour chaque cellule dans 23' par exemple si S23 est non vide)

If cell.Value <> "11" Then
- C'est pas plutôt l'inverse ? : If cell.Value = "11" Then

Sheets("ANNUEL").Range("A" & cell.Row & ":R" & cell.Row).Copy _
Sheets("NOVEMBRE").Range("A" & Sheets("NOVEMBRE").Range("A65536").End(xlUp).Row + 1)
- Il manque 'Destination:=' en début de 2ème ligne

Cordialement

KD
 
Re : Première MACRO... HELP

Parce que cela ne coûte rien, un grand merci, ça fonctionne avec votre macro.

Juste pour information, car pour moi c'est pas clair du tout... Pourriez vous me donner une explication par ligne à votre macro?

Merci encore
 
Re : Première MACRO... HELP

Re,

VB:
'a placer une fois en tête de module, oblige à déclarer ensuite les variables (les dim as), non obligatoire mais fortement recommandé pour la clarté, pour éviter les fautes de frappes...
Option Explicit

Sub NOVEMBRE()
'déclaration des variables wA et wN représenteront des feuilles, les autres des nombres entiers courts
Dim wA As Worksheet, wN As Worksheet, i As Long, r As Long, c As Long
    'les feuilles étant des objets on les initialise avec l'instruction Set
    Set wA = Worksheets("ANNUEL"): Set wN = Worksheets("NOVEMBRE")
    'Pour obtenir le nombre r, on se place en dernière cellule de la colonne A (Cells(Rows.Count, 1)) de la feuille wN et on remonte jusqu'à la 1ere cellule non vide (End(xlUp)). On prend la valeur de la ligne correspondante (Row)
    r = wN.Cells(Rows.Count, 1).End(xlUp).Row
    'Début d'une boucle variant de 24 à 9010
    For i = 24 To 9010
        'Si la cellule S ligne i de la feuille wA vaut 11 alors
        If wA.Cells(i, 19) = 11 Then
            'r augmente de 1 (=1ère ligne vide de wN d'après la définition de r)
            r = r + 1
            'copier la plage (dans wA) allant de A ligne i jusque R ligne i et la coller en feuille wN en A ligne r
            wA.Range(wA.Cells(i, 1), wA.Cells(i, 18)).Copy Destination:=wN.Cells(r, 1)
        End If
    'augmenter i de 1 et revenir en début de boucle si i < 9011
    Next i
   
End Sub

'Remarque:  Votre idée 'for each cell in' n'est pas moins bonne, je suis juste plus habitué comme ça

Cordialement

KD
 
- 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
7
Affichages
173
Réponses
15
Affichages
775
Retour