cs_marsupio
Messages postés25Date d'inscriptionvendredi 4 février 2005StatutMembreDernière intervention20 avril 2005
-
21 mars 2005 à 12:22
cs_marsupio
Messages postés25Date d'inscriptionvendredi 4 février 2005StatutMembreDernière intervention20 avril 2005
-
22 mars 2005 à 11:27
Bonjour,
sous excel et vb, pour tester si une case a une valeur ou non...
je met: if blablabla = "" then
là je test qu'il n'y a rien d'écrit,
Mais si je veux tester s'il y a du texte, qu'est ce que je dois mettre (j'ai essayé if blablabla= TEXT then, mais je pense que ça n'a rien à voir..)
cs_marsupio
Messages postés25Date d'inscriptionvendredi 4 février 2005StatutMembreDernière intervention20 avril 2005 21 mars 2005 à 17:15
Merci messieurs,
Masterhack: j'avais déjà essayé "else" ainsi que "else if"... ça ne marche pas
Stéphane: je comprends bien le principe de ton code, mais à moins d'être vraiment polio, ça ne fonctionne pas. Peut-être que cela vient du fait que je n'utilise pas VB directement. En effet le seul moyen de taper un code puisque je suis au boulot (bécane bloquée), c'est de passer par excel, or il y a peut-être des "restrictions" sur VB
Au risque de devenir lourd avec mon problème, je me risque à vous expliquer autre chose. Au départ, j'utilisais la fonction "else", mais je ne sais pas pourquoi, il m'insérait autant de lignes qu'il y avait de "boucles". J'avais l'impression qu'il ne fermait pas le "if pas text alors" initial. D'ou mon idée de rajouter un deuxième test : "if text alors"...
Je sais, c'est pas clair du coup, je vous copie le code en entier, ce sera peut-être plus parlant:
Sub test()
'je copie les données à insérer sur le tableau
Range("J5:P5").Copy
Workbooks.Open Filename:= _
"C:\.....\tableau.xls"
Range("AM2").PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
' nbr correspond au nombre de lignes du tableau
Dim nbr As Integer
'je fais une boucle qui test la référence de chaque ligne
Dim boucle As Integer
nbr = Range("AC2")
For boucle = 0 To nbr Step 1
If Range("AM2") = Range("B10").Offset(boucle) Then
'si la référence n'a pas de données, alors je copie bêtement...
If Range("L10").Offset(boucle) = "" Then
Range("AN2:AS2").Copy
Range("L10").Offset(boucle).PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Range("B10").Offset(boucle).Select
'si il y a déja des données, j'insère une ligne, fais de la mise en page, et copie ensuite
ElseIf Range("L10").Offset(boucle) = Text Then
Rows("10:10").Offset(boucle).Insert shift:=xlUp
Range("B10:B11").Offset(boucle).MergeCells = True
Range("D10:D11").Offset(boucle).MergeCells = True
Range("E10:E11").Offset(boucle).MergeCells = True
Range("F10:F11").Offset(boucle).MergeCells = True
Range("G10:G11").Offset(boucle).MergeCells = True
Range("H10:H11").Offset(boucle).MergeCells = True
Range("I10:I11").Offset(boucle).MergeCells = True
Range("J10:J11").Offset(boucle).MergeCells = True
Range("B10:J11").Offset(boucle).VerticalAlignment = xlTop
Range("AN2:AS2").Copy
Range("L10").Offset(boucle).PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
'j'efface ma 1er copie
Range("AM2:AS2").ClearContents
End If
End If
Next boucle
'je ferme ma source
Windows("fiche entreprise.xls").Activate
Application.DisplayAlerts = False
Windows("fiche entreprise.xls").Close
Windows("tableau.xls").Activate
End Sub
cs_Alain Proviste
Messages postés908Date d'inscriptionjeudi 26 juillet 2001StatutModérateurDernière intervention 1 février 20152 21 mars 2005 à 17:16
dans ce cas là pour savoir si c'est une formule, tu testes le premier caractère, si c'est "=" alors il y a une formule
If cells(ligne,colonne) = vbnullstring then 'cellule vide
'code cellule vide
Elseif left(cells(ligne,colonne),1) = "=" then 'formule
'code cellule formule
else 'cellule ni vide ni formule
'code en question...
end if
voilà j'espère de na pas avoir répondu trop à l'ouest.