Première ligne vide

Bonjour à tous,

J'aurais besoin de votre aide pour sélectionner la première ligne vide après la ligne 4 de toutes mes feuilles excel avec la couleur de feuille en rouge.

Les feuilles n'ont pas le même nombre de lignes.

Voici le code que j'utilise pour le moment auquel je voudrais ajouter ma demande :

Function couleurOnglets()
Dim f As Worksheet
For Each f In ThisWorkbook.Worksheets

Select Case f.[A3]

Case "A modifier"
f.Tab.Color = RGB(255, 47, 47)

Case Default
f.Tab.ColorIndex = xlColorIndexNone

End Select
Next
End Function

Je vous remercie d'avance,

Cordialement,

Jéjé

Bonjour,

Peut être comme ceci :

Function couleurOnglets()
    Dim f As Worksheet
    For Each f In ThisWorkbook.Worksheets
        Select Case f.[A3]
        Case "A modifier"
            f.Tab.Color = RGB(255, 47, 47)
        Case Default
            f.Tab.ColorIndex = xlColorIndexNone
        End Select

        ' selection de la premiere cellule vide en colonne A apres la ligne 4:
        Dim cellVide As Range
        If f.Range("A5").Value = "" Then
            Set cellVide = f.Range("A5")
        Else
            Set cellVide = f.Range("A5").End(xlDown).Offset(1)
        End If
    Next
End Function

Bonjour,

Merci pour ta réponse mais j'ai un message d'erreur lorsque je lance la macro :

image

ah oui pardon, sur la ligne jaune corrigez "A5" en "A4". Erreur de ma part

Je dois faire une mauvaise manip je pense car rien ne se passe à part mettre en rouge les feuilles que je souhaite.

En fait votre demande n'est pas claire... Le code que je vous ai fourni sauvegarde dans la variable cellVide la premiere cellule vide en colonne A apres la ligne 4. Ensuite moi je n'ai pas compris ce que vous vouliez en faire "sélectionner la première ligne vide"... ?

Donc je vous ai laissé la main, cette cellule est dans "cellVide", ensuite vous faites ce que vous voulez.

ce que je souhaite c'est sélectionner la première cellule vide de la colonne A de chaque feuille en rouge située après la cellule A4

Ensuite sur chacune de ces feuilles je vais venir coller 4 lignes issues d'un autre classeur.

Ces 4 lignes sont identiques.

D'accord, mais comme vous etes dans une boucle sur les feuilles du classeur, selectionner une cellule puis changer de feuille n'est pas très fiable : la selection change avec la feuille. Dans votre cas, supposons que les cellules à coller s'appellent "cellAColler", alors le code a adopter est le suivant :

Function couleurOnglets()
    Dim f As Worksheet
    For Each f In ThisWorkbook.Worksheets
        Select Case f.[A3]
        Case "A modifier"
            f.Tab.Color = RGB(255, 47, 47)
        Case Default
            f.Tab.ColorIndex = xlColorIndexNone
        End Select

        ' selection de la premiere cellule vide en colonne A apres la ligne 4:
        Dim cellVide As Range
        If f.Range("A5").Value = "" Then
            Set cellVide = f.Range("A5")
        Else
            Set cellVide = f.Range("A4").End(xlDown).Offset(1)
        End If

        ' definition des cellules a coller
        Dim cellAColler As Range
        Set cellAColler = MonAutreWb.Workseets(1).Range("A4:B5")       ' a adapter evidemment

        ' collage
        cellAColler.Copy cellVide
        Application.CutCopyMode = False
    Next
End Function

Merci mais je suis complétement nul en vba.

Pouvez-vous encore m'aider ?

Les données que je veux copier sont dans une feuille nommée "signature" et la plage est A1:A11

Si la plage est dans un autre fichier il me faut aussi le nom de l'autre fichier, et savoir si vous l'avez ouvert (si oui c'est mieux, sinon il faut connaitre egalement son chemin d'accès).

Ensuite on est d'accord que vous voulez copier A1:A11 sur toutes les feuilles ? pas de changement

Pour me simplifier la tâche, j'ai mis la feuille signature dans le même classeur.

Oui je souhaite copier sur toutes les feuilles qui sont en rouge

D'accord, essayez ceci alors :

Function couleurOnglets()
    ' definition des cellules a coller
    Dim cellAColler As Range
    Set cellAColler = ThisWorkbook.Worksheets("signature").Range("A1:A11")

    Dim f As Worksheet
    For Each f In ThisWorkbook.Worksheets
        ' on skip la feuille signature
        If LCase$(f.Name) <> "signature" Then
            ' coloriage de l'onglet
            Select Case f.[A3]
            Case "A modifier"
                f.Tab.Color = RGB(255, 47, 47)
            Case Default
                f.Tab.ColorIndex = xlColorIndexNone
            End Select

            ' selection de la premiere cellule vide en colonne A apres la ligne 4:
            Dim cellVide As Range
            If f.Range("A5").Value = "" Then
                Set cellVide = f.Range("A5")
            Else
                Set cellVide = f.Range("A4").End(xlDown).Offset(1)
            End If

            ' collage
            cellAColler.Copy cellVide
            Application.CutCopyMode = False
        End If
    Next
End Function

correction Workseets en Worksheets

Re-bonjour,

J'ai à nouveau un message d'erreur :

image

Hello,

corriger la ligne

Set cellAColler = ThisWorkbook.Workseets("signature").Range("A1:A11")

avec Set cellAColler = ThisWorkbook.Worksheets("signature").Range("A1:A11")

Ce n'est pas ça l'erreur.

La correction était déjà faite dans votre dernier envoi.

Voulez vous fournir un fichier ? on avancera beaucoup plus vite. Merci

Bonjour,

en général pour trouver la première cellule vide d'une colonne on recherche la première pleine en partant du bas et on ajoute 1 :
LigVide = Range("A" & Rows.Count).End(xlUp).Row +1
Souvent le xlDown provoque des résultats "incompréhensibles". A voir donc.

@ bientôt

LouReeD

Voici mon fichier anonymisé

bonjour le fil, à mon avis, cette fonction est un mauvais choix, je préférais une macro avec le même contenu.

Bonjour,

J'ai modifié le fichier exemple pour y mettre moins de données.

Rechercher des sujets similaires à "premiere ligne vide"