Syntaxe

Bonjour à tous,

Quelle syntaxe puis-je utiliser pour rajouter la condition que les lignes des colonnes H, I J K L M N O soient vides pour exécuter le code suivant ??

For Each c In Range("G2:G" & .Range("G" & Rows.Count).End(xlUp).Row)
If Not IsEmpty(c) Then
Ligneajout = Worksheets("données").Range("B" & Rows.Count).End(xlUp).Offset(1).Row
c.EntireRow.Copy Worksheets("données").Range("A" & Ligneajout)

End If
Next c

Merci

Bonjour

Essaie ça :

If WorksheetFunction.CountA(Range("H1:O" & Rows.Count)) = 0 Then
        For Each c In Range("G2:G" & .Range("G" & Rows.Count).End(xlUp).Row)
            If Not IsEmpty(c) Then
            Ligneajout = Worksheets("données").Range("B" & Rows.Count).End(xlUp).Offset(1).Row
            c.EntireRow.Copy Worksheets("données").Range("A" & Ligneajout)

            End If
        Next c
    end if

Bonsoir,

Procédure incomplète... ?

1er objet Range non qualifié (pas de point devant). Le 2e en ayant un laisse penser qu'on se trouve dans bloc With, auquel cas mettre un point devant le 1er...

c étant en G, tu peux tester les 8 colonnes qui suivent avec une boucle :

    For i = 1 To 8
       If c.Offset(, i) <> "" Then Exit For
    Next i
    If i > 8 Then  'c'est que la condition est vérifiée

Choix de test entre <> "" ou Not IsEmpty dépend de ce qu'on sait du contenu potentiel éventuel...

Pour la suite, je préfère ne pas copier ! et ne pas opérer sur la ligne entière (mais uniquement sur la fraction utile).

Cordialement.

Oups ! Erreur de manip !

Bonjour MFerrand

Salut gmb !

J'ai rien vu...

Bonjour,

Deux jours que je me prends la tête et ça ne fonctionne toujours pas .... Je me decide à revenir vers vous, afin de comprendre comment je peux arriver à Verifier tous les enregistrements de la colonne G, si la cellule n'est pas vide et que les huit autres à côté le sont, copier la ligne sur un autre onglet ....

( Bon certes je suis une quiche ... Et je suis sûr que la réponse est évidente et simple ... )

Merci à vous

Avec un fichier peut-être ??

Merci

Bonjour à tous

On progresse : on a enfin le fichier !

Il ne manque plus qu'un exemple, sur une autre feuille, de ce qu'on veut obtenir !

Bye !

=)

Merci

Bonsoir,

Ma proposition telle que je l'avais indiquée (avec quelques trucs autour... )

Sub EpurationCivo()
    Dim Tex(), n&, i&, j%, x%
    With ActiveSheet
        n = .UsedRange.SpecialCells(xlCellTypeLastCell).Row
        For i = 4 To n
            If .Cells(i, 7) <> "" Then
                For j = 8 To 14
                    If .Cells(i, j) <> "" Then Exit For
                Next j
                If j > 14 Then
                    ReDim Preserve Tex(1 To 7, x)
                    For j = 1 To 7
                        Tex(j, x) = .Cells(i, j).Value2
                    Next j
                    .Cells(i, 7).ClearContents: x = x + 1
                End If
            End If
        Next i
    End With
    With ActiveSheet.Next
        If .Range("A3") <> "" Then
            j = .Cells(.Rows.Count, 1).End(xlUp).Row
        Else
            j = 3
        End If
        With .Range("A" & j).Resize(x, 7)
            .Value = WorksheetFunction.Transpose(Tex)
            .Columns(7).NumberFormat = "dd/mm/yyyy"
        End With
    End With
    ActiveSheet.Range("G4:G" & n).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
    ActiveSheet.Next.Activate
End Sub

Cordialement.

Bonjour,

Parfait !!

Juste une dernière chose, Est-ce que vous pourriez m'expliquer ces lignes de code :

[code][/With .Range("A" & j).Resize(x, 7)

.Value = WorksheetFunction.Transpose(Tex)

.Columns(7).NumberFormat = "dd/mm/yyyy"

End With

End With

ActiveSheet.Range("G4:G" & n).SpecialCells(xlCellTypeBlanks).EntireRow.Delete

ActiveSheet.Next.Activate

code]

Merci beaucoup

Désolé, Je me suis fendu d'une explication ligne par ligne, qui est passé à la trappe, incident qui survient quelquefois (micro interruption de la connexion...), Je n'ai pas le temps de tout réécrire, donc à voir plus tard... Je commençais cependant par m'étonner de ta demande d'explications sur la fin du code, ce qui laisse supposer que ce qui précède ne te posait aucun problème d'interprétation, or la fin découle directement du code qui précède... ?

Cordialement.

c'est surtout que j'ai une erreur sur cette fin de code ...

Quand je l'applique sur le fichier test, tout se passe normalement, mais quand je l'applique sur mon fichier cela me fait une erreur du type : la méthode Delete de la classe Range a échoué et je ne comprends pas du tout pourquoi d'un côté cela fonctionne et pas de l'autre ...

Cdlt

Ton fichier ne correspond pas à ton modèle !

Par exemple, tu as un tableau Excel au lieu d'une plage normale...

Je pense plutôt aux lignes de la colonne vides ..

car la macro fonctionne bien sauf dans le cas ou dans mon fichier définitif, il y a beaucoup de lignes vides dans la colonne G

Non ?

Pas de raison a-priori. Une erreur se produirait si aucune ligne transférée, sur l'affectation car le tableau de transfert n'existerait pas (j'ai omis un test sur ce point) et pourrait se produire également sur la suppression (mais ne se produira pas là-dessus car se produira avant !!)

Certes, ça dépasse mes petites connaissances en vba, me reste plus qu'a en trouver une pour supprimer les doublons dans les deux onglets et j'arriverai a ce que je veux.

Je mets quand même en résolu puisque ta macro fonctionne =)

Merci beaucoup


Certes, ça dépasse mes petites connaissances en vba, me reste plus qu'a en trouver une pour supprimer les doublons dans les deux onglets et j'arriverai a ce que je veux.

Je mets quand même en résolu puisque ta macro fonctionne =)

Merci beaucoup

Comme tu voudras... Si ça fonctionne sur le modèle et erreur sur le fichier réel, c'est qu'il y a une différence entre les deux... C'est à voir dans le fichier.

Rechercher des sujets similaires à "syntaxe"