Détection de cellules vides multiples sur une même ligne

Bonjour a tous,

Dans Excel 2010, j'ai déployé une macro qui me permet depuis la feuille 1 de copier une plage de cellules (colonnes A à G) d'une même ligne. J'active ensuite la feuille 2 dans laquelle je dois coller la ligne sous les conditions suivantes que je n'arrive pas à modéliser dans mon code :

  • Trouver la première ligne vide sur les colonnes B à H (toutes les cellules sur cette plage doivent être vides) et limiter cette recherche aux lignes 2 à 89
  • Dès que la ligne est trouvée, se placer sur la cellule de la colonne B
  • Coller la plage précédemment copiée

Ensuite je reviens sur la feuille 1 et j'efface la ligne sélectionnée précédemment (ça c'est ok également)

Des pistes à me fournir svp ?

(Je ne peux pas fournir de fichier, la politique mise en place par ma société contre le fuite d'informations ne me permet pas d'upload.)

Merci d'avance.

G.

Bonjour,

Pour sélectionner la première cellule vide en partant du haut de la colonne B :

cells(range("B1").end(xlDown).rows + 1, 2).select

cela revient a se placer sur B1 et faire un ctrl+flèche du bas

J'espère que ça t'auras fais avancer

Bonjour Assuri,

Merci pour cette ligne de code mais malheureusement j'obtiens une erreur run time 1004.

L'erreur 1004 apparait lorsque je fais défiler les instructions avec F8.

Si je lance la macro, j'ai une erreur 13 (type mismatch).

Une autre piste ?

Bonjour,

ton Erreur 13 vient du fait qu'il faut écrire "Row" et non pas "Rows" dans la ligne fournie par assuri.

Oui désolé pour l'erreur

Merci welch

Pas de pb assuri, comme je débute je ne suis pas au fait des subtilités de la syntaxe à ce stade.

Mais j'ai toujours l'erreur 1004 Application-defined or object-defined lorsque j'arrive sur cette ligne.

En effet, je n'avais pas pensez à ça mais si les deux premières lignes de ta colonne B sont vides, cela génère une erreur 1004 (car tu sélectionne la dernière cellule de la feuille + 1).

Tu peut opter pour un code moins propre mais qui marchera même avec une colonne B vierge :

ligne = 1

do while cells(ligne,2) <> ""

ligne = ligne +1

loop

cells(ligne,2).select

Cela revient aussi à sélectionner la première cellule vide rencontrée dans la colonne B (même si ce code est loin d'être joli )

C'est une idée assuri mais l'erreur revient... J'avais tenté avec des boucles et même résultat et je ne comprends pas pourquoi j'ai systématiquement ce blocage.

Voici mon code pour mieux visualiser, j'ai laissé la zone de recherche de cellule vide volontairement.

Pour être plus précis, je dois tester sur la colonne E si une cellule est vide (tester les colonnes B à H serait l'idéal mais avec la colonne E ça devrait suffire), et ce de la ligne 2 jusqu'à la ligne 89 maximum,et dès qu'elle est trouvée, coller la zone de la Sheet1 préalablement copiée vers la colonne B.

Sub copyLine()
    Range(Cells(ActiveCell.Row, 1), Cells(ActiveCell.Row, 7)).Select 'sélectionne la zone à copier de la ligne active
    Selection.Copy 'copie la zone
    Sheets("Sheet2").Activate 'active la sheet2

    'rechercher la première ligne dont la cellule des colonnes B à H sont vides

    'se déplacer vers la colonne 2 (B)

    ActiveSheet.Paste ' coller la sélection en provenance de sheet1
    Sheets("Sheet1").Activate 'retour vers sheet1
    Selection.ClearContents 'effacement des cellules sélectionnées
End Sub

Chez moi ce code marche parfaitement :

Sub copyLine()
    Range(Cells(ActiveCell.Row, 1), Cells(ActiveCell.Row, 7)).Select 'sélectionne la zone à copier de la ligne active
   Selection.Copy 'copie la zone
   Sheets(2).Activate 'active la sheet2

    'rechercher la première ligne dont la cellule des colonnes B à H sont vides
        For ligne = 2 To 89
            If IsEmpty(Cells(ligne, 5)) Then
                Exit For
            End If
        Next ligne
        Cells(ligne, 2).Select
    'se déplacer vers la colonne 2 (B)

    ActiveSheet.Paste ' coller la sélection en provenance de sheet1
   Sheets(1).Activate 'retour vers sheet1
   Selection.ClearContents 'effacement des cellules sélectionnées
End Sub

Comme isEmpty ne fonctionnait pas, j'ai trouvé une solution avec While.

Merci à tous pour m'avoir donné matière à réfléchir.

Rechercher des sujets similaires à "detection vides multiples meme ligne"