Méthode Cut Range et variables refusant de passer en int

Bonjour à tous.

J'ai des soucis sur la méthode Cut de la classe Range.

Je tente de déplacer des colonnes et j'ai une erreur sur lorsque j’exécute l'instruction.

Je n'ai pas de problème de types de variable car j'ai converti mes variables string en integer (erreur d'éxecution 1004. Erreur définie par l'application ou par l'objet).

J'ai tenté plusieurs écritures que vous trouverez ci-dessous (juste avant d'écrire ce post, tout ce qui est était avant Cut fonctionnait bien et maintenant c'est toute la ligne qui renvoie une erreur !).

NewFeuil.Columns(tableauOPEN(compteur + boucle, 1)).Cut Destination:=NewFeuil.Columns(tableauTM(x, 1))

tableauOPEN(compteur + boucle, 1) est une variable tableau qui est censée renvoyer un entier et

tableauTM(x, 1) est aussi une variable tableau qui est aussi censée renvoyer un entier (J'ai utilisé une boucle de test IsNumeric).

NewFeuil.Columns(tableauOPEN(compteur + boucle, 1)).Cut Destination:=NewFeuil.range(Cells(1, tableauTM(x, 1)), Cells(1, tableauTM(x, 1)))

Ici, seule l'écriture de l'argument destination a changé car, juste avant le post, ce qui était écrit avant Cut fonctionnait parfaitement. Et je ne comprends pas pourquoi cela ne fonctionne plus.

Par contre, la ligne suivante fonctionne parfaitement:

NewFeuil.Columns(6).Cut Destination:=NewFeuil.Columns(4)

Je suppose que c'est un problème de variable, voire de typage.

Ce que je ne comprends pas, c'est que lorsque je fais un test de mes deux variables tableau (initialement string) après avoir fait une conversion en integer, et à l'aide d'une boucle de test utilisant IsNumeric, et bien c'est bon. Le format est bien numérique.

Mais quand je teste avec Vartype, VarType me renvoie le nombre "8" pour mes deux variables.

Et dans la fenêtre espion, les valeurs de mes variables sont affublées de guillemets: cela signifie qu'elles ne sont pas des "int".

J'utilise cette ligne pour la conversion et le test:

tableauOPEN(compteur + boucle, 1) = CInt(tableauOPEN(compteur + boucle, 1))
                If IsNumeric(tableauOPEN(compteur + boucle, 1)) Then
                MsgBox "Numérique !"
                Else: MsgBox "Pas numérique !"
                End If
MsgBox "Le type est " & VarType(tableauOPEN(compteur + boucle, 1)) & " " & VarType(tableauTM(x, 1))

Pourquoi mes variables refusent de passer en numérique ?

Est-ce bien là le fond du problème ?

Merci d'avance pour vos retours.

Cordialement.

Des Pyrénées-Atlantiques où la vie est douce et belle...

Bonjour

Sans fichier donc ......

dans cette instruction il faut faire référence à NewFeuil pour chaque objet de cette feuille

NewFeuil.Columns(tableauOPEN(compteur + boucle, 1)).Cut Destination:=NewFeuil.range(Cells(1, tableauTM(x, 1)), Cells(1, tableauTM(x, 1)))

Cela donne

NewFeuil.Columns(tableauOPEN(compteur + boucle, 1)).Cut Destination:=NewFeuil.range(NewFeuil.Cells(1, tableauTM(x, 1)), NewFeuil.Cells(1, tableauTM(x, 1)))

Mais tu peux simplifier ton code

NewFeuil.Columns(tableauOPEN(compteur + boucle, 1)).Cut Destination:=NewFeuil.Cells(1, tableauTM(x, 1))

Oui "Des Pyrénées-Atlantiques où la vie est douce et belle..." et pluvieuse

Bonjour Banzaï64.

Tout d'abord, merci de t'être penché sur mon cas.

Comme je ressens que tu sembles passablement agacé par le caractère humide du Béarn et du pays Basque (en même temps, s'ils sont aussi verts, c'est qu'il n'y a pas de secrets...), je t'ai écrit une petite macro:

If PluieSurBéarn = True and Soleil.Hidden = true Then

QuelleShit.Range(tousLesNuages)

Cool = Replace (Pluie, Soleil)

Banzaï64.ID(excellente)

Banzaï64.Maison.Interior(Pasquestion)

Banzaï64.sort(deSaMaison)

Banzaï64.select(sesBaskets)

Banzaï64.Run(CoteauxDeJurançon)

Banzaï64.Activate(Sourire)

MsgBox "Quelle chance de vivre dans notre belle région !"

Blague à part, j'ai essayé les deux lignes que tu m'as écrites et elles génèrent toutes deux le même message d'erreur que précédemment.

N'est-ce vraiment pas un problème de "typage" de variables ?

J'ai créé un fichier xls avec la macro dans le module1.

Merci.

Cordialement.

Petite séance de course à pieds, ce midi pendant la pause déjeuner, sous le soleil qui tapait avec vue imprenable sur les Pyrénées du balcon de Buros...

7checkbox.xlsm (76.08 Ko)

Bonjour

Très bonne macro (le sourire est revenu - et c'est vrai belle journée aujourd'hui)

Sinon je n'ai pas trop étudier ta macro

Pourquoi tu déclares tes tableaux en String ?

Une solution

NewFeuil.Columns(Val(tableauOPEN(compteur + boucle, 1))).Cut Destination:=NewFeuil.Cells(1, Val(tableauTM(x, 1)))

Parce que je récupère toutes les entêtes des colonnes de mes deux feuilles.

La première dimension pour le nom de l'entête et la deuxième pour stocker le numéro de la colonne correspondant à l'entête.

J'aurais pu faire deux tableaux à une dimension plutôt qu'un tableau à 2 dimensions, mais je ne savais pas que je pourrais être confronté à ce problème de "typage".

Bonjour

Une autre méthode à tester

Bonjour Banzaï64.

Super !

Ça fonctionne très bien.

Je n'en étais pas loin mais alors j'aurais mis 10 000 lignes pour y arriver.

Mes algos sont trop alambiqués par rapport à celui que tu as écrit: je manque de... tout !

il est possible de "setter" une variable (range dans ce cas) avec des méthodes (Find en l'occurence) ?

Set Cel = WsF2.Rows(1).Find(what:=WsF1.Cells(1, ColF1), LookIn:=xlValues, lookat:=xlWhole)

C'est un sacré raccourci: je ne savais pas que c'était possible.

Tu peux me traduire cette ligne de code en français que je puisse la "digérer" ?

Merci pour tout !

Cordialement.

Bonjour

Set Cel = WsF2.Rows(1).Find(what:=WsF1.Cells(1, ColF1), LookIn:=xlValues, lookat:=xlWhole)

Très simple

On affecte à la variable Cel (type Range - ou Objet) le résultat de la recherche (Find) dans la feuille "papa" (WsF2) ligne 1 (Rows(1))

Les paramètres/options de la recherche sont

On recherche quoi ? (WsF1.Cells(1, ColF1)) c'est à dire le contenu de la cellule Cells(1, ColF1) (entête de la colonne) de la feuille "toto" (WsF1)

On recherche où ? : Dans les valeurs (LookIn:=xlValues)

On recherche tout le contenu de la cellule : lookat:=xlWhole

Pas toujours évident d'expliquer

J'ai tout compris: c'est très clair.

J'en suis encore à saucissonner à outrance mes instructions.

Peut-être qu'un jour j'excellerai...

Merci encore.

Bonne soirée, le banzaï64 de Jurançon !

Rechercher des sujets similaires à "methode cut range variables refusant passer int"