Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Recherche colonne spécifique vide

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

herve62

XLDnaute Barbatruc
Bonjour à tous

Pour mon application , j'ai reçu le petit bout de macro ( ci-attaché)
J'ai enlevé l'inputbox car je ne veux pas saisir de date
J'ai modifié l'offset ( -1 -2 -3 ) car je cherche la colonne (month )vide puis prends les chiffres précédent , mais ce que je n'ai pas vu c'est qu'il y a forcément d'autres colonnes vides , et pas celles qu'il me faut !!!!

BUT : mettre à jour un tableau de % avec les derniers connus (mois précédent) de la feuille 1

Ce que j'aimerais avoir c'est ( c'est mon idée ! ) :
- trouver la 1ere colonne "Month " qui est VIDE
- Revenir en arrière pour extraire les % ( C RATE ) et les mettre dans le tableau ( feuille 2)
Derrière tout ça , j'ai un graph qui s'affiche en automatique

Mon but , est d'avoir ce graph à jour , c'est à dire dans cet exemple nous sommes en aout donc les dernières données sont de juillet

Etant curieux et aimant apprendre , j'aimerais savoir comment fonctionne l'instruction :
Set i = ........ ?? car apparemment recherche la date , mais sur toute une ligne et sans boucle ??? je vois : xlformulas ??

Merci pour l'aide et les réponses

Hervé
 

Pièces jointes

Re : Recherche colonne spécifique vide

Le code complet pour copier simplement la dernière plage renseignée de la feuille 1 dans la feuille 2
Code:
Private Sub CommandButton1_Click()
Dim FL1 As Worksheet
Dim FL2 As Worksheet
Dim Plage As Range
Dim NoCol As Integer
'afin d'e pouvoir travailler sur les objets feuil1 et feuil2 on en crée les instances
    Set FL1 = Worksheets("Feuil1") 
    Set FL2 = Worksheets("Feuil2")
    'pour obtenir la colonne Month du premier mois vide-> Appel de la fonction
    NoCol = NoColonne(FL1) 'et on récupère NoCol

    'pour travailler sur l'objet Plage (à copier) on en crée l'instance
    Set Plage = FL1.Range(Cells(4, NoCol - 3).Address & ":" & Cells(11, NoCol - 1).Address)
    'NoCol (vide) - 3 car le mois renseigné se trouve 3 colonnes avant
    'et NoCol - 1 car la plage couvre 3 cellules NoCol-1, -2 et -3

    Plage.Copy
    'Collage des seules valeurs sans les formules
    FL2.Cells(6, 2).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone

    'suppression des instances pour libérer l'espace mémoire
    Set FL1 = Nothing
    Set FL2 = Nothing
    Set Plage = Nothing
End Sub

Function NoColonne(FL1)
Dim c As Range, ok As Boolean, Adres
    'Plage de recherche ligne 2, de la colonne A à la dernière cellule renseignée
    With FL1.Range("A2:" & FL1.Cells(1, FL1.Range("IV2").End(xlToLeft).Column).Address)

        'Si la recherche aboutit, c sera l'objet de la cellule où "Month" aura été trouvé
        Set c = .Find("Month", LookIn:=xlValues, Lookat:=xlPart, SearchDirection:=xlNext)
        If Not c Is Nothing Then 'si c n'est pas vide, Month a été trouvé
            Adres = c.Column

            'comme on cherche le dernier "Month", on poursuit donc la recherche jusqu'au dernier
            Do
                'on vérifie que la colonne contenant Month est bien vide sous la ligne qui le contient
                ok = FL1.Cells(65536, c.Column).End(xlUp).Row = 2 And InStr(FL1.Cells(2, c.Column).Value, "Month") <> 0
                If ok Then 'si la colonne est vide, on est sur le dernier Month
                    'on mémorise donc le N° de colonne de l'objet c (la cellule)
                    NoColonne = c.Column 'Nom de la fonction = N° de colonne
                    'et on quitte la fonction
                    Exit Function
                End If
                Set c = .FindNext(c)
            'La boucle se poursuit tant que c n'est pas vide...
            '... et que la recherche n'a pas repris depuis la première colonne trouvée (colonne Adres)
            Loop While Not c Is Nothing And c.Column > Adres
        End If
    End With
    'Si on sort ici, Month n'a pas été trouvé...
End Function
Je ne sais pas si ça va te servir mais pour utiliser une fonction, c'est ça 😉
 
Dernière édition:
Re : Recherche colonne spécifique vide

Bonsoir Epaf

Je vais essayer tout ça ....mais la sem. proch. au boulot ; là WE : repos !!!!
Merci pour le temps que tu as passé
Je décortiquerais ton code pour comprendre et apprendre , cela pourra me servir plus tard
Déjà je vais le mettre dans mon appli.

Bon WE
A+
Hervé
 
- 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

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…