Remplissage cellule vide sur 2 colonne et 5 lignes

Bonjour le forum,

J'ai ce code que j'aimerais transformer comme l'exemple ci-dessous

Range("A1").Value = "valeur"

Mais mon code il sélectionne que A1, et qu'il se peut que la cellule A1 est déjà occupé. J'aimerais voir si B1 n'est pas occupé, la selectionner et mettre la valeur dans B1.

Apres plusieur reflexion et en etant debutant sur vba, je n'arrive pas à trouver une solution si quelqu'un peut m'aider s'il vous plait.

HEGT
1/ remplir ici si vide2/ selectionner cette cellule si 1/ non vide
3/ selectionner cette cellule si 2/ non vide4/ selectionner cette cellule si 3/ non vide
5/ selectionner cette cellule si 4/ non vide6/ ETC.. jusqu'à la fin de ce tableau

Merci d'avance

Bonjour

A quoi correspond la variable Valeur et d'où vient-elle ?

SInon peut-être un genre de code comme ceci

With ActiveSheet
    nblig = .UsedRange.Rows.Count
    DlgA = .Range("A" & Rows.Count).End(xlUp).Row
    DlgB = .Range("B" & Rows.Count).End(xlUp).Row

    Select Case DlgA
        Case Is > DlgB: .Range("B" & DlgB + 1) = valeur
        Case Is = DlgB: .Range("A" & DlgA + 1) = valeur
    End Select
End With

Cordialement

Bonjour Dan,

Merci pour ton retour,

La variable est une chaine de caractère qui vient d’une autre feuille.

Merci pour le code que tu as proposé ! Je vais l’essayer et je te ferai un retour.

Ton ligne de code c'est ce qu'il me fallait, j'ai essayé de l'adapter sur une plage de cellule définie (par exemple range("A10:B15") mais je n'y arrives pas (j'ai essayé current region). Est ce que quelqu'un a une petite solution.

Merci d'avance

Bonjour

Quelle est la plage définie dans votre fichier ? elle est fixe ou variable ?

Cordialement

Bonjour,

La plage définie est fixe, j'ai mis mon fichier avec des commentaires dans mes codes pour mieux comprendre ce que je veux faire.

Cdlt

13dashboard.xlsm (24.68 Ko)

Merci du fichier qui permet de mieux comprendre

Remplacez le code par celui ci-dessous

Sub tbdmanex()
'MAJ des 155
'HEHU
Dim modele As Integer
Dim PartieMOD As String, PartieBDD As String
Dim numligne As Byte, numcolonne As Byte, DlgA As Byte
Dim j As Boolean

For i = 2 To 3
    modele = Sheets("MODELE").Cells(i, 1).Value
    numligne = Application.Match(modele, Sheets("BDD").Range("A1:A6"), 0) 'numero ligne des machines

    For numcolonne = 3 To 7
        PartieMOD = Sheets("MODELE").Cells(i, numcolonne).Value ' MANEX A,B,C,D,manuel dans modele
        PartieBDD = Sheets("BDD").Cells(numligne, numcolonne).Value 'MANEX A,B,C,D,manuel dans machine
        If PartieMOD <> PartieBDD Then 'si il y a une difference entre 2 colonne, remplir dans dashboard les differences
            With Sheets("DASHBOARD")
                DlgA = .Range("A" & Rows.Count).End(xlUp).Row

                Select Case j
                Case Is = 0
                    .Range("A" & DlgA + 1) = Sheets("MODELE").Cells(1, numcolonne).Value _
                        & " " & Sheets("BDD").Cells(numligne, numcolonne).Value
                    j = 1
                Case Is = 1
                    .Range("B" & DlgA) = Sheets("MODELE").Cells(1, numcolonne).Value _
                        & " " & Sheets("BDD").Cells(numligne, numcolonne).Value
                    j = 0
                End Select
            End With
        End If
    Next
Next i
End Sub

Cordialement

Dan,

merci pour ton code, c'est ce qu'il me fallait. Si je veux qu'il soit juste sur la plage Range("A3:B11") car il se peut qu'un autre tableau pareil sera en dessous, est-ce cela est possible?

Cordialement

Car il se peut qu'un autre tableau pareil sera en dessous, est-ce cela est possible

Tout est toujours possible. En limitant par exemple la variable --> If dlga < 12 .... placé avant le Select case (à tester)
Il me faudrait un exemple.

Dan,

Je ne'ai pas trouvé de solution avec "if..." pour trouver ma plage car la dernière ligne non vide n'appartiendra jamais à la plage voulue. Je remets le fichier avec une explication poussée.

Cdlt

9dashboard.xlsm (24.71 Ko)

Je ne comprends plus rien à ce que vous voulez faire.
Pour HEHU se trouve en ligne 12 au lieu de 3 ?

Si vous changez à chaque fichier on ne va jamais y arriver

Dan,

j'ai déplacé HEHU pour mieux comprendre ma question. HEHU sera une plage de cellule qui peut être à la ligne 3 ou 12. Mais en dessous il pourrais avoir une autre plage de cellule qui sera programmé comme HEHU, sur le fichier j'ai mis comme exemple HABR. Est-il possible de trouver la dernière ligne non vide d'une plage définie.

Le fichier n'a pas changé mais avec ma curiosité, je me suis posé la question ci dessus ainsi j'ai adapté le fichier pour vous expliquer ma question.

J'essaye de trouver une solution tout en adaptant ton code avec les fonctions current region ou/et area si c'est la bonne voix.

Cordialement

j'ai déplacé HEHU pour mieux comprendre ma question. HEHU sera une plage de cellule qui peut être à la ligne 3 ou 12

Cela ne fait plus 5 lignes comme dans le titre de votre demande mais bien 8 lignes.
Il faut trouver la ligne où le tableau commence. HEHU ou autre commence.

Dans votre fichier,

- en feuille BDD pour le modèle 155 vous avez deux machines HEHU et HVBB
- en feuille Modele pour 155 vous ne précisez pas la machine

Comment savez-vous depuis la feuille Modèle où vous allez compléter dans la feuille DASHBOARD
En gros il faut savoir si c'est HEHU ou HVBB ou autre

Edit : mettons pour HEHU. essayez le code comme ceci :

Sub tbdmanex()
'MAJ des 155
'HEHU
Dim modele As Integer
Dim PartieMOD As String, PartieBDD As String
Dim numligne As Byte, numcolonne As Byte, Lig As Byte
Dim j As Boolean

Lig = Sheets("DASHBOARD").Cells.Find("HEHU", LookIn:=xlValues, lookat:=xlWhole).Row + 1
For i = 2 To 3
    modele = Sheets("MODELE").Cells(i, 1).Value
    numligne = Application.Match(modele, Sheets("BDD").Range("A1:A6"), 0) 'numero ligne des machines

    For numcolonne = 3 To 7
        PartieMOD = Sheets("MODELE").Cells(i, numcolonne).Value ' MANEX A,B,C,D,manuel dans modele
        PartieBDD = Sheets("BDD").Cells(numligne, numcolonne).Value 'MANEX A,B,C,D,manuel dans machine
        If PartieMOD <> PartieBDD Then 'si il y a une difference entre 2 colonne, remplir dans dashboard les differences
            With Sheets("DASHBOARD")

                If Lig < Lig + 8 Then
                    Select Case j
                    Case Is = 0
                        .Range("A" & Lig) = Sheets("MODELE").Cells(1, numcolonne).Value _
                            & " " & Sheets("BDD").Cells(numligne, numcolonne).Value
                        j = 1
                    Case Is = 1
                        .Range("B" & Lig) = Sheets("MODELE").Cells(1, numcolonne).Value _
                            & " " & Sheets("BDD").Cells(numligne, numcolonne).Value
                        j = 0
                        Lig = Lig + 1
                    End Select
                End If
            End With
        End If
    Next
Next i
End Sub

Dan,

Mon idée de base c'est trouver un moyen pour que dlgA se mette sur une plage défini pour chercher à l'intérieur.

J'ai essayé ton code edit et ça répond parfaitement à ma question, j'ai pu facilement l'adapter pour le reste des plages.

Merci beaucoup Dan, sujet résolu.

Cordialement

Rechercher des sujets similaires à "remplissage vide colonne lignes"