VB et Excel

Résolu
rebelette Messages postés 63 Date d'inscription lundi 19 octobre 2009 Statut Membre Dernière intervention 5 janvier 2011 - 24 janv. 2010 à 11:11
rebelette Messages postés 63 Date d'inscription lundi 19 octobre 2009 Statut Membre Dernière intervention 5 janvier 2011 - 26 janv. 2010 à 21:42
Bonjour, j'ai écrit un morceau de code pour vider des colonnes sur Excel depuis VB, seulement, cela prend une plombe car parfois, il y a plus de 100 colonnes à vider. Peut être existe-t-il une autre méthode (Clear ou autre) mais je ne sais comment sélectionner une colonne entière d'un coup.
Goutte = les différentes colonnes
Larme = les 112 lignes de chaque colonne que je dois vider. Merci de votre réponse

For Goutte = 1 To 140
If xlRange.Cells(2, Goutte).Value = "" Then
For Larme = 1 To 112
xlRange.Cells(Larme, Goutte).Value = ""
Next
Else
End If
Next

34 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
24 janv. 2010 à 21:16
Et si tu pilotes une appli Excel : c'est que tu as Excel !
Commence (première étape) à vérifier (depuis Excel lui-même, sans "pilotage") le fonctionnement du code que je t'ai écrit !


____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
0
rebelette Messages postés 63 Date d'inscription lundi 19 octobre 2009 Statut Membre Dernière intervention 5 janvier 2011
24 janv. 2010 à 21:54
J'ai installé le code dans une macro et ça fonctionne très bien depuis Excel. Ainsi, est-il possible de lancer une Macro Excel depuis VB6.0?
Je pense que oui mais comment?
0
rebelette Messages postés 63 Date d'inscription lundi 19 octobre 2009 Statut Membre Dernière intervention 5 janvier 2011
24 janv. 2010 à 22:24
J'ai le même problème que tout à l'heure, cad l'application me renvoie que le Type défini par l'utilisateur n'est pas défini
(avec Dim couic as range en surbrillance).
De plus, après une modif, il apparait que l'application ne reconnait pas c (il est vrai que je ne l'ai pas déclarée). Sous quel format dois-je la déclarer (Integer, autre, ?)
0
rebelette Messages postés 63 Date d'inscription lundi 19 octobre 2009 Statut Membre Dernière intervention 5 janvier 2011
24 janv. 2010 à 22:57
J'ai compris que c = couic. Par contre, l'appli efface une ligne entière (la 2ème ligne vide) puis me renvoie l'erreur 438
(l'objet ne gère pas cette propriété ou cette méthode) avec la ligne du For Each Couic en surbrillance.
je t'ai mis ci-dessous le code après les qq modifs apportées, j'ai sûrement commis 1 ou plusieurs erreurs (j'ai transformé les Range en xlRange, par exemple, car dans les déclarations, j'ai xlRange as Object)

Dim Couic As Object
For Each Couic In xlWKS.xlRange(xlWKS.Cells(1, 1), xlWKS.Cells(112, 140)).Columns
If xlWKS.Cells(2, Couic.Column) = "" Then
If Couic Is Nothing Then
Set Couic = xlWKS.xlRange(xlWKS.Cells(1, Couic.Column), xlWKS.Cells(112, Couic.Column))
Else
Set Couic = xlApp.Union(Couic, xlWKS.xlRange(xlWKS.Cells(1, Couic.Column),
xlWKS.Cells(112, Couic.Column)))
End If
End If
Next
Couic.ClearContents
Set Couic = Nothing
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
rebelette Messages postés 63 Date d'inscription lundi 19 octobre 2009 Statut Membre Dernière intervention 5 janvier 2011
24 janv. 2010 à 23:07
je vais me pieuter, merci pour ta disponibilité, à +
0
rebelette Messages postés 63 Date d'inscription lundi 19 octobre 2009 Statut Membre Dernière intervention 5 janvier 2011
25 janv. 2010 à 09:42
Le code fonctionne parfaitement et est 100 fois plus rapide que les boucles que j'utilisais. Lors des 1ers tests, "Application" causait un Bug et j'avais pensé à le changer pour xlApp, et ça marche. Un grand Thanks à toi, rebelette
0
rebelette Messages postés 63 Date d'inscription lundi 19 octobre 2009 Statut Membre Dernière intervention 5 janvier 2011
26 janv. 2010 à 17:04
Si j'ai bien compris ton code (pas à pas), la recherche rentre dans la boucle, Couic devient la 1ère colonne où la ligne 2 = "", et ensuite, Couic "associe" toutes les autres colonnes où la ligne 2 = "" à la 1ère. Une fois arrivé au bout de la boucle, Couic est vidé.
En fait, c ne sert qu'à constituer une boucle mais ne prend aucune valeur, c'est ça?
Tu m'as conseillé de supprimer la ligne suivante, mais j'utilise xlRange dans l'application. Que puis je mettre à la place?

Set xlRange = xlWKS.Range("A1:A65535")
Set xlRange = ?
0
rebelette Messages postés 63 Date d'inscription lundi 19 octobre 2009 Statut Membre Dernière intervention 5 janvier 2011
26 janv. 2010 à 20:55
Bien, par exemple, dans cette boucle qui appartient à un CommandButton et qui remplit 2 ComboBox. Toute mon application est faite de la sorte. C'est aussi pour cette raison que j'ai du mal avec les morceaux de code que j'ai trouvé et qui gèrent Excel avec les lettres
Exemple (A:A) ou autre. Mais c'est un autre problème.


For i= 3 To 19 Step 2
If (xlRange.Cells(2, i).Value) <> "" Then
CmbPJs.AddItem (xlRange.Cells(2, i).Value)
CmbXPMJ.AddItem (xlRange.Cells(2, i).Value)
Else
End If
Next
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
26 janv. 2010 à 21:11
pardon :
manquue un End With après le Next (bien sûr).


____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
26 janv. 2010 à 21:17
Tu nas en plus dans ton code un truc bizarroïde !
Comment, alors que tu as défini ainsi xlERange :
Set xlRange = xlWKS.Range("A1:A65535") (donc uniquement ta colonne A)
peux-tu te référer à d'autres collones de cette plage (la colonne i qui avance dans ta boucle) ?
C'est pour moi totalement incompréhensible !


____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
0
rebelette Messages postés 63 Date d'inscription lundi 19 octobre 2009 Statut Membre Dernière intervention 5 janvier 2011
26 janv. 2010 à 21:22
Je suis sur VB6.0 car j'ai fait il y a 3 ans une formation TSAII (allègrement ratée d'ailleurs) mais au cours de laquelle j'ai découvert VB6 (c'était au programme) et j'ai en quelque sorte flashé dessus. A l'époque, je ne connaissais pas VBA. J'ai commencé il y a 2 ans une application liée au Jeux de Rôles (ça fait long, 2 ans, j'ai galéré comme c'est pas possible). En fait, je n'ai aucune base solide mais petit à petit, j'avance...
0
rebelette Messages postés 63 Date d'inscription lundi 19 octobre 2009 Statut Membre Dernière intervention 5 janvier 2011
26 janv. 2010 à 21:28
J'avais trouvé le code
Set xlRange = xlWKS.Range("A1:A65535")
dans un code plus vaste et après bien des manip, j'étais arrivé à ce que je voulais, cad inscrire et aller chercher des données sur une feuille Excel. Comme ça marchait avec cette ligne de code(et que ça ne marchait pas sans), je l'ai gardée. En tous les cas, ça marche car j'inscris et je vais chercher des données d'un bout à l'autre de la feuille sans problèmes. Si tu me dis que ça ne devrait pas fonctionner, je ne sais pas pourquoi
0
rebelette Messages postés 63 Date d'inscription lundi 19 octobre 2009 Statut Membre Dernière intervention 5 janvier 2011
26 janv. 2010 à 21:32
Tu sembles en tous cas avoir plus de compatibilité avec la programmation que moi. J'ai souvent l'impression d'être dans une barque, avec une rame cassée, et je dois remonter une rivière à contre sens et après chaque virage de la rivière, il y a toujours un autre virage.
0
rebelette Messages postés 63 Date d'inscription lundi 19 octobre 2009 Statut Membre Dernière intervention 5 janvier 2011
26 janv. 2010 à 21:42
Parfois, c'est long. Je vais essayer avec la boucle que tu m'as envoyé et j'ai ensuite un tas de modifs à réaliser (mais le code n'en sera que plus cohérent)
0
Rejoignez-nous