Recopie des valeurs sans valeurs nulles Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
Répondre
d
doliprux
Nouveau venu
Nouveau venu
Messages : 9
Inscrit le : 21 juin 2017
Version d'Excel : 2010 FR

Message par doliprux » 21 juin 2017, 17:15

Bonjour à tous,

J'ai cherché dans le forum et j'ai trouvé des choses similaires à ma demande mais lorsque j'essaie de l'appliquer ca ne fonctionne pas vraiment.
Voici mon problème :
J'ai actuellement plusieurs colonnes dont je veux récupérer les valeurs (et non pas les formules) tout en évitant de récupérer les valeurs nulles. Ces colonnes sont au nombre de 6 et sont liées 2 à 2.

Voici ce que j'ai essayé :
Sub copieValeur()
y = 3
    For x = 3 To 2500
    
        If Cells(x, 9).Value = "" Then
        Else
            Cells(y, 46).Value = Cells(x, 9).Value
            Cells(y, 47).Value = Cells(x, 11).Value
        End If
    
   
        If Cells(x, 20).Value = "" Then
        Else
            Cells(y, 48).Value = Cells(x, 20).Value
            Cells(y, 49).Value = Cells(x, 22).Value
        End If
        
        If Cells(x, 29).Value = "" Then
        Else
            Cells(y, 50).Value = Cells(x, 29).Value
            Cells(y, 51).Value = Cells(x, 31).Value
        End If
    
    y = y + 1
    Next x
    
    
End Sub

Ca à l'air de fonctionner pour la première colonne mais pas pour les autres :?:
Quelqu'un saurait il pourquoi et aurait il une solution pour moi ?
Je suis un gros débutant en VBA donc veuillez me pardonner si j'ai fais des choses horribles :lol:

Merci par avance à tous et bonne soirée!
Cordialement.
M
MFerrand
Fanatique d'Excel
Fanatique d'Excel
Messages : 17'171
Appréciations reçues : 448
Inscrit le : 20 juillet 2015
Version d'Excel : 2010 FR

Message par MFerrand » 21 juin 2017, 17:29

Bonjour,

Une chose m'interroge, la valeur nulle numérique, c'est 0. En testant sur ""(valeur nulle texte) tu n'exclues pas les 0 !
d
doliprux
Nouveau venu
Nouveau venu
Messages : 9
Inscrit le : 21 juin 2017
Version d'Excel : 2010 FR

Message par doliprux » 21 juin 2017, 17:34

excusez moi je me suis mal exprimé, quand je voulais dire valeur nulle c'est que la formule me renvoie une cellule vide. D'ou le ""
M
MFerrand
Fanatique d'Excel
Fanatique d'Excel
Messages : 17'171
Appréciations reçues : 448
Inscrit le : 20 juillet 2015
Version d'Excel : 2010 FR

Message par MFerrand » 21 juin 2017, 17:51

OK ! Cela ne devrait pas te poser de problème puisque ne récupérant que les valeurs, tu n'auras pas de formule ! Sans test !
As-tu une raison de tester cette valeur "" pour que la cellule cible ne la contienne pas ?
d
doliprux
Nouveau venu
Nouveau venu
Messages : 9
Inscrit le : 21 juin 2017
Version d'Excel : 2010 FR

Message par doliprux » 22 juin 2017, 09:21

Bonjour,
Je vais essayer d'être plus clair dans mes explications.
J'ai un tableur de 2000 lignes, celui ci contient une colonne "attribué a" qui sont les groupes sur lesquels j'essaie de faire du monitoring quasi automatique.
A l'aide de la formule :
=SI(ESTERREUR(INDEX(H2;EQUIV(I$1;H2;0);1));"";INDEX(D2;EQUIV(D2;D2;0);1))
Je récupère ainsi les données d'un groupe. Il me renvoie ainsi les lignes du groupe en question ou une cellule vide.
Maintenant dans une autre fonction, j'ai besoin de n'avoir que les cellules "pleines" d'ou mon essai.

Est-ce plus clair ? ^^'

Cordialement.
d
doliprux
Nouveau venu
Nouveau venu
Messages : 9
Inscrit le : 21 juin 2017
Version d'Excel : 2010 FR

Message par doliprux » 22 juin 2017, 09:38

C'est bon j'ai trouvé la solution, en fait c'était juste un problème algorythmique sur mes incréments. Il me fallait un incrémenteur différent pour chaque groupe :
Sub copieValeur()
y = 3
p = 3
t = 3
    For x = 3 To 2500
        a = 1
        b = 1
        c = 1
        If Not Cells(x, 9).Value = "" Then
            Cells(y, 46).Value = Cells(x, 9).Value
            Cells(y, 47).Value = Cells(x, 11).Value
            a = 0
        End If
    
   
        If Cells(x, 20).Value = "" Then
        Else
            Cells(p, 48).Value = Cells(x, 20).Value
            Cells(p, 49).Value = Cells(x, 22).Value
            b = 0
        End If
        
        If Cells(x, 29).Value = "" Then
        Else
            Cells(t, 50).Value = Cells(x, 29).Value
            Cells(t, 51).Value = Cells(x, 31).Value
            c = 0
        End If
    
   If a = 0 Then y = y + 1
   If b = 0 Then p = p + 1
   If c = 0 Then t = t + 1
   
    Next x
    
    
End Sub
Merci de l'aide, la nuit a porté conseil ;)

Bonne journée !
d
doliprux
Nouveau venu
Nouveau venu
Messages : 9
Inscrit le : 21 juin 2017
Version d'Excel : 2010 FR

Message par doliprux » 22 juin 2017, 10:05

Autant pour moi, toujours un problème, l'incrément n'as pas l'air de fonctionner correctement, ya des lignes sur lesquels il y a de l'écrasement de données :/
M
MFerrand
Fanatique d'Excel
Fanatique d'Excel
Messages : 17'171
Appréciations reçues : 448
Inscrit le : 20 juillet 2015
Version d'Excel : 2010 FR

Message par MFerrand » 22 juin 2017, 10:24

Bonjour,

Mets un fichier qui illustre ce que tu veux obtenir, à partir de quoi... ! :D Tes propos sont nébuleux et si au départ j'avais une idée de ce que tu voulais faire, après ta précédente intervention, je me garderai bien d'en avoir une ! :D
Confusion entre apparence et réalité : la valeur "", c'est du texte ! une cellule qui la contient n'est pas vide, et une cellule vide renvoie 0 ou "" selon le contexte !

Cordialement.
d
doliprux
Nouveau venu
Nouveau venu
Messages : 9
Inscrit le : 21 juin 2017
Version d'Excel : 2010 FR

Message par doliprux » 22 juin 2017, 10:46

C'est bon en réalité j'ai réussi, je m'étais juste planté sur un incrément à la fin ^^'

Merci encore pour ton aide!
Répondre
  • Sujets similaires
    Réponses
    Vues
    Dernier message