VB et Excel [Résolu]

Messages postés
63
Date d'inscription
lundi 19 octobre 2009
Statut
Membre
Dernière intervention
5 janvier 2011
- - Dernière réponse : 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
Afficher la suite 

14/34 réponses

Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
214
0
Merci
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
Commenter la réponse de ucfoutu
Messages postés
63
Date d'inscription
lundi 19 octobre 2009
Statut
Membre
Dernière intervention
5 janvier 2011
0
Merci
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?
Commenter la réponse de rebelette
Messages postés
63
Date d'inscription
lundi 19 octobre 2009
Statut
Membre
Dernière intervention
5 janvier 2011
0
Merci
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, ?)
Commenter la réponse de rebelette
Messages postés
63
Date d'inscription
lundi 19 octobre 2009
Statut
Membre
Dernière intervention
5 janvier 2011
0
Merci
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
Commenter la réponse de rebelette
Messages postés
63
Date d'inscription
lundi 19 octobre 2009
Statut
Membre
Dernière intervention
5 janvier 2011
0
Merci
je vais me pieuter, merci pour ta disponibilité, à +
Commenter la réponse de rebelette
Messages postés
63
Date d'inscription
lundi 19 octobre 2009
Statut
Membre
Dernière intervention
5 janvier 2011
0
Merci
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
Commenter la réponse de rebelette
Messages postés
63
Date d'inscription
lundi 19 octobre 2009
Statut
Membre
Dernière intervention
5 janvier 2011
0
Merci
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 = ?
Commenter la réponse de rebelette
Messages postés
63
Date d'inscription
lundi 19 octobre 2009
Statut
Membre
Dernière intervention
5 janvier 2011
0
Merci
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
Commenter la réponse de rebelette
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
214
0
Merci
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
Commenter la réponse de ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
214
0
Merci
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
Commenter la réponse de ucfoutu
Messages postés
63
Date d'inscription
lundi 19 octobre 2009
Statut
Membre
Dernière intervention
5 janvier 2011
0
Merci
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...
Commenter la réponse de rebelette
Messages postés
63
Date d'inscription
lundi 19 octobre 2009
Statut
Membre
Dernière intervention
5 janvier 2011
0
Merci
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
Commenter la réponse de rebelette
Messages postés
63
Date d'inscription
lundi 19 octobre 2009
Statut
Membre
Dernière intervention
5 janvier 2011
0
Merci
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.
Commenter la réponse de rebelette
Messages postés
63
Date d'inscription
lundi 19 octobre 2009
Statut
Membre
Dernière intervention
5 janvier 2011
0
Merci
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)
Commenter la réponse de rebelette