Afficher le contenue d'une cellule par rapport à une cellule préalablement trouv

Résolu/Fermé
chrisandben Messages postés 3 Date d'inscription jeudi 3 janvier 2019 Statut Membre Dernière intervention 3 janvier 2019 - Modifié le 3 janv. 2019 à 14:10
chrisandben Messages postés 3 Date d'inscription jeudi 3 janvier 2019 Statut Membre Dernière intervention 3 janvier 2019 - 3 janv. 2019 à 17:43
Bonjour a toutes et à tous,

J'essaye de trouver la solution à ma question depuis plusieurs jours en vain, pourriez-vous m'aider, SVP.
J'explique mon problème dans mon code :

Dim Tablo
With Worksheets("a")
Tablo = .Range(.Cells(4, 10), .Cells(4, 18)) 'définition d'une plage avec qu'une cellule non vide dans l'onglet a
End With
With Worksheets("b")
For i = LBound(Tablo, 1) To UBound(Tablo, 1)
For j = LBound(Tablo, 2) To UBound(Tablo, 2)
If Tablo(i, j) <> "" Then 'trouver la cellule non vide dans l'onglet a
.Cells(2 + i, 7 + j) = Tablo(i, j) 'afficher dans l'onglet b le contenu de la cellule trouvée
.Cells(2 + i, 4 + j) = Tablo(i, j).cel.Offset(rowoffset:=-2, columnoffset:=0).Value ' et la je voudrais avoir le contenu de la cellule qui se trouve 2 lignes au dessus de la cellule préalablement trouvée, mais j'ai un erreur : objet requis
End If
Next j
Next i
End With


Merci d'avance pour votre aide !

2 réponses

ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 160
3 janv. 2019 à 16:05
Bonjour BenandChris, bonjour le forum,

Peut-être comme ça :
Public Sub Macro1()
Dim Tablo
With Worksheets("a")
    Tablo = .Range(.Cells(4, 10), .Cells(4, 18)) 'définition d'une plage avec qu'une cellule non vide dans l'onglet a
End With
With Worksheets("b")
    For i = LBound(Tablo, 1) To UBound(Tablo, 1)
        For j = LBound(Tablo, 2) To UBound(Tablo, 2)
            If Tablo(i, j) <> "" Then 'trouver la cellule non vide dans l'onglet a
                .Cells(2 + i, 7 + j) = Tablo(i, j) 'afficher dans l'onglet b le contenu de la cellule trouvée
                .Cells(2 + i, 4 + j) = Tablo(i - 2, j)
                Exit Sub
            End If
        Next j
    Next i
End With
End Sub

1
chrisandben Messages postés 3 Date d'inscription jeudi 3 janvier 2019 Statut Membre Dernière intervention 3 janvier 2019
3 janv. 2019 à 16:36
Bonjour ThauTheme,

D'abord merci pour ta réponse.

J'ai corrigé mon code, mais j'ai un nouveau message d'erreur toujours au même endroit : l'indice n'appartient pas à la sélection.

Ca veux peut être dire que la nouvelle cellule sort de ma plage tablo ?
0
ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 160
3 janv. 2019 à 17:14
Essaie comme ça :
Sub Macro1()
Dim PL As Range
Dim R As Range

With Worksheets("a")
    Set PL = .Range(.Cells(4, 10), .Cells(4, 18))
End With
Set R = PL.SpecialCells(xlCellTypeConstants)
If Not R Is Nothing Then
    With Worksheets("b")
        .Cells(2 + i, 7 + j) = R.Value
        .Cells(2 + i, 4 + j) = R.Offset(-2, 0).Value
    End With
End If
End Sub

1
chrisandben Messages postés 3 Date d'inscription jeudi 3 janvier 2019 Statut Membre Dernière intervention 3 janvier 2019
3 janv. 2019 à 17:43
JE CROIS QUE CA MARCHE !!!!!!!

Merci infiniment ThauTheme, bis !
0