Macro recuperation de données sur deux Excel

Elhevan a écrit :

Parce que je suis débile, mais je me soigne J'ai testé chez moi en changeant la cellule A1, mais toi tu fais A2 en fonction de A1 donc si j'fais pas un petit moins un ça marche moins bien

    Dim size As Integer
    Dim taille As Integer
    Dim ref As Integer
    Dim nom As String
    nom = Workbooks(FicheB).Worksheets(Feuil1).Cells(i-1, j).Value
    count = InStrRev(nom, "_")
    taille = Len(nom)
    ref = Right(nom, taille - count)
    ref = ref + 1
    Workbooks(FicheB).Worksheets(Feuil1).Cells(i, j).Value = Left(nom, count) & ref
     

Pour la reference sur le fichier déja existant c'est S_2016_38 ( le 38 c'est le chiffre actuel de la ref )

Mais ducoup le 2016 va changer en début de l'année pro, je serais obligé de re rentrer dans le code pour incrementer l'année

Il y a pas moyen de faire incrémenter par rapport à la cellule d'avant?

A l'heure actuelle ça prend S_2016_38, ça isole ce qui est après le dernier _ donc 38, ça rajoute un donc 39 et ça colle ça à ce qui est avant le dernier _ donc S_2016_. L'année prochaine tu devras remplir la première ref à la main et le reste ira tout seul.

Ah non je ne te permet pas de te traiter de débile car sinon moi je serais quoi ?

Sinon, ca ne marche pas c'est peut etre lier au count?

j'ai fais un screen du code et l'erreur

Dim i As Integer
        i = 2
        ThisWorkbook.Activate
        Do Until IsEmpty(Worksheets(SEG_2016).Cells(i, 1)) 'va chercher la ligne vide
        i = i + 1
        Loop
        Dim j As Integer

        Dim size As Integer
    Dim ref As Integer
    Dim nom As String
      j = 1
    nom = Workbooks(FicheB).Worksheets(Feuil1).Cells(i - 1, j).Value
    count = InStrRev(nom, "_")
    taille = Len(nom)
    ref = Right(nom, taille - count)
    ref = ref + 1
    Workbooks(FicheB).Worksheets(Feuil1).Cells(i, j).Value = Left(nom, count) & ref
        j = j + 1
        If IsEmpty(Workbooks(FicheA).Worksheets(SEG_2016).Cells(8, 3)) Then
screen

En effet, c'est censé être un size, ça marche chez moi parce que j'ai pas demandé à Excel de m'engueuler si je déclare pas mes variables, mais c'pas bien

Donc remplace count par size (à trois endroits si j'suis pas aveugle en plus d'être étourdie), on l'a déclaré, on l'utilise !

Edit : je vois que tu as changé le nom de la feuille, pense-y ici aussi.

Elhevan a écrit :

En effet, c'est censé être un size, ça marche chez moi parce que j'ai pas demandé à Excel de m'engueuler si je déclare pas mes variables, mais c'pas bien

Donc remplace count par size (à trois endroits si j'suis pas aveugle en plus d'être étourdie), on l'a déclaré, on l'utilise !

Edit : je vois que tu as changé le nom de la feuille, pense-y ici aussi.

il aime pas le size non plus :'(

As-tu changé le nom de la feuille comme tu l'as fait avec le reste du code ?

(au passage je crois que tu as viré le dim taille )

tu avais déja déclarer taille au début du fichier donc je l'ai supprimé du nouveau code

et j'ai mis size aulieu de count mais ca ne marche toujours pas

la même erreur pour size et taille aussi je pense


aaaah oui la je suis vraiment DEBILE ! je viens de changer le nom de la feuille

pour le dim taille c'est bon c'est la même chose que pour le fichier A ou je dois déclarer une nouvelle variable?

On peut le réutiliser, c'est bon, j'avais juste oublié qu'on s'en était servi (et là ça va planter et détruire le monde juste pour me donner tort ).

Du coup ça marche ?

Elhevan a écrit :

On peut le réutiliser, c'est bon, j'avais juste oublié qu'on s'en était servi (et là ça va planter et détruire le monde juste pour me donner tort ).

Du coup ça marche ?

hahaha je fais genre j'ai participer !

oui ca l'air de marcher j'ai rajouter des conditions dans le code la je cherche s'il y a quelque chose que j'ai oublié

en tout cas je te remercie énormément!

si j'ai besoin d'autres chose dans les deux jours qui viennent je n'hésiterai pas à revenir vers toi !

Elhevan a écrit :

On peut le réutiliser, c'est bon, j'avais juste oublié qu'on s'en était servi (et là ça va planter et détruire le monde juste pour me donner tort ).

Du coup ça marche ?

une petite question :

J'essaie de faire une condition pour la recuperation d'une valeur

si la case (8,3) est vide je recupere la valeur A

sinon

si

If IsEmpty(Workbooks(FicheA).Worksheets(SEG_2016).Cells(8, 3)) Then
        Workbooks(FicheB).Worksheets(SEG_2016).Cells(i, j).Value = "A"
        Else
        If Workbooks(FicheA).Worksheets(SEG_2016).Cells(17, 3) = "YES" Then

            Workbooks(FicheB).Worksheets(SEG_2016).Cells(i, j).Value = "A&B"
        End If

        Workbooks(FicheB).Worksheets(SEG_2016).Cells(i, j).Value = "B"
        End If

Mais quand la case est à YES j'ai comme résultat que B

Je pense qu'il faut l'écrire autrement le code

Observe bien la différence entre les deux lignes ! C'est subtil, mais important

Workbooks(FicheA).Worksheets(SEG_2016).Cells(17, 3) = "YES"
Workbooks(FicheB).Worksheets(SEG_2016).Cells(i, j).Value = "A&B"
Elhevan a écrit :

Observe bien la différence entre les deux lignes ! C'est subtil, mais important

J'ai corrigé mais ca resous pas le soucis mais c'est pas bon car le "YES" est dasn une autre cellule même ! qui est en C17

 If IsEmpty(Workbooks(FicheA).Worksheets(SEG_2016).Cells(8, 3)) Then
        Workbooks(FicheB).Worksheets(SEG_2016).Cells(i, j).Value = "A"
        Else
        If Workbooks(FicheA).Worksheets(SEG_2016).Cells(i, j) = "YES" Then

            Workbooks(FicheB).Worksheets(SEG_2016).Cells(i, j).Value = "A&B"
            Else
               Workbooks(FicheB).Worksheets(SEG_2016).Cells(i, j).Value = "B"
        End If

        End If

C'était du value dont je parlais ^^'

If IsEmpty(Workbooks(FicheA).Worksheets(SEG_2016).Cells(8, 3)) Then
        Workbooks(FicheB).Worksheets(SEG_2016).Cells(i, j).Value = "A"
        Else
        If Workbooks(FicheA).Worksheets(SEG_2016).Cells(17, 3).Value = "YES" Then

            Workbooks(FicheB).Worksheets(SEG_2016).Cells(i, j).Value = "A&B"
        End If

        Workbooks(FicheB).Worksheets(SEG_2016).Cells(i, j).Value = "B"
        End If
Elhevan a écrit :

C'était du value dont je parlais ^^'

If IsEmpty(Workbooks(FicheA).Worksheets(SEG_2016).Cells(8, 3)) Then
        Workbooks(FicheB).Worksheets(SEG_2016).Cells(i, j).Value = "A"
        Else
        If Workbooks(FicheA).Worksheets(SEG_2016).Cells(17, 3).Value = "YES" Then

            Workbooks(FicheB).Worksheets(SEG_2016).Cells(i, j).Value = "A&B"
        End If

        Workbooks(FicheB).Worksheets(SEG_2016).Cells(i, j).Value = "B"
        End If

en effet !

super merciii !

Bonjour D3dex et Elhevan ainsi que tout les autres genies d'excel

Je suis de retour,

depuis cet après midi je me casse la tête avec une concatenation avec suppression d'espace vide

j'ai reussi à faire la concatenation mais quand les cellules sont vides ca les copie quand même :'(

 j = j + 1 ' nom C
     Workbooks(FicheB).Worksheets(S2016).Cells(i, j).Value = Workbooks(FicheA).Worksheets(S2016).Cells(20, 3).Value & Chr(10) & Workbooks(FicheA).Worksheets(S2016).Cells(25, 3).Value & Chr(10) & Workbooks(FicheA).Worksheets(S2016).Cells(30, 3).Value & Chr(10) & Workbooks(FicheA).Worksheets(S2016).Cells(35, 3).Value & Chr(10) & Workbooks(FicheA).Worksheets(S2016).Cells(40, 3).Value

Est ce que vous avez une idée de comment copier les cellules non vide seulement avec la concatenation

Merciii

Elhevan a écrit :

C'était du value dont je parlais ^^'

If IsEmpty(Workbooks(FicheA).Worksheets(SEG_2016).Cells(8, 3)) Then
        Workbooks(FicheB).Worksheets(SEG_2016).Cells(i, j).Value = "A"
        Else
        If Workbooks(FicheA).Worksheets(SEG_2016).Cells(17, 3).Value = "YES" Then

            Workbooks(FicheB).Worksheets(SEG_2016).Cells(i, j).Value = "A&B"
        End If

        Workbooks(FicheB).Worksheets(SEG_2016).Cells(i, j).Value = "B"
        End If

pas de réponse à ma question ci dessus?

quelqu'un pour m'aider en l'absence de mes deux sauveurs?

Merci!

Bonjour

-missya a écrit :
 j = j + 1 ' nom C
     Workbooks(FicheB).Worksheets(S2016).Cells(i, j).Value = Workbooks(FicheA).Worksheets(S2016).Cells(20, 3).Value & Chr(10) & Workbooks(FicheA).Worksheets(S2016).Cells(25, 3).Value & Chr(10) & Workbooks(FicheA).Worksheets(S2016).Cells(30, 3).Value & Chr(10) & Workbooks(FicheA).Worksheets(S2016).Cells(35, 3).Value & Chr(10) & Workbooks(FicheA).Worksheets(S2016).Cells(40, 3).Value
 j = j + 1 ' nom C
If IsEmpty(Cells(i,j)) Then
Else Workbooks(FicheB).Worksheets(S2016).Cells(i, j).Value = Workbooks(FicheA).Worksheets(S2016).Cells(20, 3).Value & Chr(10) & Workbooks(FicheA).Worksheets(S2016).Cells(25, 3).Value & Chr(10) & Workbooks(FicheA).Worksheets(S2016).Cells(30, 3).Value & Chr(10) & Workbooks(FicheA).Worksheets(S2016).Cells(35, 3).Value & Chr(10) & Workbooks(FicheA).Worksheets(S2016).Cells(40, 3).Value
End if

S'il y a plusieurs cellules If IsEmpty(Cells(i,j)) Ans IsEmpty(l'autre)

Elhevan a écrit :

Bonjour

-missya a écrit :
 j = j + 1 ' nom C
     Workbooks(FicheB).Worksheets(S2016).Cells(i, j).Value = Workbooks(FicheA).Worksheets(S2016).Cells(20, 3).Value & Chr(10) & Workbooks(FicheA).Worksheets(S2016).Cells(25, 3).Value & Chr(10) & Workbooks(FicheA).Worksheets(S2016).Cells(30, 3).Value & Chr(10) & Workbooks(FicheA).Worksheets(S2016).Cells(35, 3).Value & Chr(10) & Workbooks(FicheA).Worksheets(S2016).Cells(40, 3).Value
 j = j + 1 ' nom C
If IsEmpty(Cells(i,j)) Then
Else Workbooks(FicheB).Worksheets(S2016).Cells(i, j).Value = Workbooks(FicheA).Worksheets(S2016).Cells(20, 3).Value & Chr(10) & Workbooks(FicheA).Worksheets(S2016).Cells(25, 3).Value & Chr(10) & Workbooks(FicheA).Worksheets(S2016).Cells(30, 3).Value & Chr(10) & Workbooks(FicheA).Worksheets(S2016).Cells(35, 3).Value & Chr(10) & Workbooks(FicheA).Worksheets(S2016).Cells(40, 3).Value
End if

S'il y a plusieurs cellules If IsEmpty(Cells(i,j)) Ans IsEmpty(l'autre)

Aaaah tu es de retour! merci !

par contre je n'ai pas compris la fin

ca ne marche pas sinon

Tu veux concaténer si quelles cases ne sont pas vides ?

Elhevan a écrit :

Tu veux concaténer si quelles cases ne sont pas vides ?

je veux concatener que les cases pas vide des 4 cases du code avec un retour chariot ( chr(10 )

Workbooks(FicheB).Worksheets(S2016).Cells(i, j).Value = Workbooks(FicheA).Worksheets(S2016).Cells(20, 3).Value & Chr(10) & Workbooks(FicheA).Worksheets(S2016).Cells(25, 3).Value & Chr(10) & Workbooks(FicheA).Worksheets(S2016).Cells(30, 3).Value & Chr(10) & Workbooks(FicheA).Worksheets(S2016).Cells(35, 3).Value & Chr(10) & Workbooks(FicheA).Worksheets(S2016).Cells(40, 3).Value
If not IsEmpty(Workbooks(FicheA).Worksheets(S2016).Cells(20, 3))
Then Workbooks(FicheB).Worksheets(S2016).Cells(i, j).Value = Workbooks(FicheB).Worksheets(S2016).Cells(i, j).Value & Workbooks(FicheA).Worksheets(S2016).Cells(20, 3).Value & Chr(10)
End if
If not IsEmpty(Workbooks(FicheA).Worksheets(S2016).Cells(25, 3).Value)
Then Workbooks(FicheB).Worksheets(S2016).Cells(i, j).Value = Workbooks(FicheB).Worksheets(S2016).Cells(i, j).Value & Workbooks(FicheA).Worksheets(S2016).Cells(25, 3).Value & Chr(10) 
End if
If not IsEmpty(Workbooks(FicheA).Worksheets(S2016).Cells(30, 3).Value)
Then Workbooks(FicheB).Worksheets(S2016).Cells(i, j).Value = Workbooks(FicheB).Worksheets(S2016).Cells(i, j).Value & Workbooks(FicheA).Worksheets(S2016).Cells(30, 3).Value & Chr(10) 
End If
If not IsEmpty(Workbooks(FicheA).Worksheets(S2016).Cells(35, 3).Value)
Then Workbooks(FicheB).Worksheets(S2016).Cells(i, j).Value = Workbooks(FicheB).Worksheets(S2016).Cells(i, j).Value & Workbooks(FicheA).Worksheets(S2016).Cells(35, 3).Value & Chr(10) 
End If
If not IsEmpty(Workbooks(FicheA).Worksheets(S2016).Cells(40, 3).Value)
Then Workbooks(FicheB).Worksheets(S2016).Cells(i, j).Value = Workbooks(FicheB).Worksheets(S2016).Cells(i, j).Value & Workbooks(FicheA).Worksheets(S2016).Cells(40, 3).Value
End If
Rechercher des sujets similaires à "macro recuperation donnees deux"